如何从 C 中的浮点数中提取有偏差的指数?

2024-01-15

我在从浮点数中查找有偏差的指数时遇到问题。我不明白为什么我为参数输入的任何数字都返回 0。这是我的代码:

iFloat_t floatGetExp(iFloat_t x)
{
    return ((x >> 23) & 0x7f800000);
}

浮点数的指数是从位到 23-30,所以这就是为什么我向右移动 23 并有一个掩码0x7f800000.
例如,如果我传递给它一个浮点数248.875,指数应为 22。


((x >> 23) & 0x7f800000);移位和屏蔽的顺序错误。


C 数学库有一个检索指数的函数。这是portable way.

int floatGetExp(float x) {
    int expo;
    frexpf(x, &expo);  // fetch exponent  (0.5 <= significand < 1.0) * 2^expo
    if (x) expo -= 1;
    return expo;
}

假设binary32 https://en.wikipedia.org/wiki/Single-precision_floating-point_format格式为iFloat_t x有 4 种情况需要考虑:

无穷大/NaN、正规数、次正规数、零。

iFloat_t floatGetExp(iFloat_t x) {
  uint32_t u = (uint32_t) x; // move into known type
  // mask off the biased exponent 
  int bias_expo = (u & 0x7F800000) >> 23;
  if (bias_exp == 0xFF) return TBD;  // inf or NaN
  if (bias_exp > 0) return bias_exp - 127; // the usual
  // handle sub-normal numbers
  if (u & 0x7FFFFFFF == 0) return 0; // zero
  bias_exp -= 126;
  while (u & 0x00400000 == 0) {
    u <<= 1;
    bias_exp--;
  }
  return bias_exp;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 C 中的浮点数中提取有偏差的指数? 的相关文章

  • Qt 和 Sqlite 示例

    我正在寻找一些使用 Qt 的示例代码 它是带有 Sqlite 驱动程序的 SQL 模块 我需要示例的主要原因是我之前有 Qt 数据库接口的经验 并且 Sqlite 在字段类型方面有一些奇怪的行为 类型是按字段存储的 而不是按列存储的 The
  • 全局变量不好

    好吧 读完这篇文章和一些示例后 我仍然不清楚全局变量的含义 那么你的类中的私有变量是全局的吗 http www c2 com cgi wiki GlobalVariablesAreBad http www c2 com cgi wiki G
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 处理器关联组 C#

    我使用的是 72 核的 Windows Server 2016 我看到有两组处理器 我的 net 应用程序将使用一个或其他组 我需要能够强制我的应用程序使用我选择的组 我看到下面的代码示例 但我无法使其工作 我可能传递了错误的变量 我希望应
  • 如何配置 Ninject 来注入 NodaTime IClock

    在我的 NinjectConfigurator 中我有 container Bind
  • 如何反序列化 XML 文档

    如何反序列化此 XML 文档
  • MVC BaseController 处理 CRUD 操作

    我想重构我的基本 CRUD 操作 因为它们非常重复 但我不确定最好的方法 我的所有控制器都继承 BaseController 如下所示 public class BaseController
  • 如何在 Windows 上的 GCC 中链接 CS50 C 库

    我是 编程新手 一直在尝试使用以下命令编译我的代码MinGW https en wikipedia org wiki MinGW GCC 但我尝试包括CS50 https en wikipedia org wiki CS50 cs50 c
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 现代编译器的 C++ 中“memset”功能的状态

    Context 不久前 我偶然发现了 Alexandrescu 在 2001 年发表的 DDJ 文章 http www ddj com cpp 184403799 http www ddj com cpp 184403799 它是关于比较将
  • 如何在C++中列出Python模块的所有函数名称?

    我有一个 C 程序 我想导入一个 Python 模块并列出该模块中的所有函数名称 我该怎么做 我使用以下代码从模块中获取字典 PyDictObject pDict PyDictObject PyModule GetDict pModule
  • 括号内声明的对象的范围

    如果我声明一个这样的对象 void main myclass objectA anotherclass true true 0 即 我通过直接调用后者的构造函数来创建一个 objectA 和另一个对象 anotherclass anothe
  • 使用 StartServiceCtrlDispatcher 与 StartService 从 C 语言启动 Windows 服务有什么区别?

    我尝试使用 StartServiceCtrlDispatcher 中所述https msdn microsoft com en us library windows desktop bb540475 v vs 85 aspx https m
  • asio::this_coro::executor 的实现是什么

    在协程函数中 我们可以添加auto ex co await asio this coro executor 获取该协程的执行者 但当我想了解它的定义时 我发现了这个 Awaitable type that returns the execu
  • 如何在 JavaScript 中获取浮点数的小数位?

    我想要的是与 Number prototype toPrecision 几乎相反的 这意味着当我有数字时 它有多少位小数 例如 12 3456 getDecimals 4 对于任何想知道如何更快地完成此操作 无需转换为字符串 的人 这里有一
  • C 中的等效 plpgsql 触发器

    我有一个 PostgreSQL 9 0 服务器 并且在某些表上使用继承 因此我必须通过如下触发器模拟外键 CREATE OR REPLACE FUNCTION othertable before update trigger RETURNS
  • 在for循环中声明和初始化变量

    可以简单写一下吗 for int i 0 代替 int i for i 0 在 C 或 C 中 并且会变量i只能在循环内部访问 它在 C 中有效 它在 C 的原始版本中是不合法的 但在 C99 中被采用为 C 的一部分 当时一些 C 功能被
  • 为什么在一行中使用这个 C++ 函数两次会导致编译错误?

    我在尝试在 Visual C 2010 中实现智能相等测试宏类型模板函数时遇到了一些麻烦 该函数与VS 中关于模板函数默认参数的错误 https stackoverflow com questions 10343177 why do i g
  • Web 和 winforms 的 .Net 身份验证

    我有一个为客户端构建的 ASP NET Web 应用程序 它使用默认的 ASP NET 表单身份验证 他们现在请求一个能够 与 Web 应用程序一起工作的桌面 WinForms 应用程序 我已经创建了 Web 服务来访问他们想要从 Web
  • 将二进制长字符串转换为十六进制 C#

    我正在寻找一种将长二进制字符串转换为十六进制字符串的方法 二进制字符串看起来像这样 0110011010010111001001110101011100110100001101101000011001010110001101101011 我

随机推荐

  • 使用压缩生成的损坏的 docx

    首先我要说的是 我在这里创建了一个帐户 因为为了尝试解决这个问题 我一直在用头撞墙 所以就这样吧 另外 我已经看到这个问题了here https stackoverflow com questions 13566468 how to com
  • 在 Android 中的自定义视图上添加按钮

    我有以下课程 public class GameActivity extends Activity Override public void onCreate Bundle savedInstanceState super onCreate
  • Android 本机库链接到 aar 中的另一个本机库

    我有一个好奇的问题 我有一个 aar 库 其中包含并使用本机 so 库 现在 我想编写另一个库 它依赖于该库 并且还具有依赖于第一个库中的本机库的本机部分 依赖库同时使用第一个库中的本机代码和 java 包装器 我想知道 有什么办法 如何通
  • JSP编程-response.getWriter().flush();不起作用

    预期结果 浏览器中显示 Hello World 10秒后 幸福再见 被展示 发生了什么 页面加载了 10 秒钟 然后最后显示 Hello World Goodbye Happiness 我想要做的是显示长时间运行的操作在达到不同里程碑时的状
  • 根据使用 applescript 的内容和最佳实践,在终端中选择特定选项卡

    这是一个特定于应用程序的问题 我试图根据其中的内容在 Terminal app 中查找并选择一个选项卡 这是我正在做的事情 tell application Terminal set foundTabs to every tab of ev
  • Swing 组件的单元测试

    我正在编写一个类似 Total Commander 的应用程序 我有一个单独的文件列表组件及其模型 模型支持侦听器并发出事件通知 例如CurrentDirChanged等方式如下 private void fireCurrentDirect
  • “stat_smooth()”计算失败:找不到对象“C_crspl”

    我正在尝试添加一个geom smooth to a qplot 使用以下代码 library ggplot2 library ggplot2movies qplot votes rating data movies geom smooth
  • 在 Android Room 库中使用 Singleton

    我总是被告知使用 Singleton 很糟糕 然而 Android Room 实现的每个示例似乎都使用 Singleton 方法 有人可以解释一下为什么会这样吗 Thanks 有两种方法 1 你应该使用匕首2 2 抽象 RoomDataba
  • 我该如何修复这个正则表达式?

    前言 这个问题是以下问题的衍生问题 这个问题 https stackoverflow com q 59761275 109941 这是我的代码 https repl it repls AvariciousMindlessEllipse us
  • 在小程序中显示图像并播放音频片段

    我想在小程序中显示图像并播放音频剪辑 我编写了以下代码 但它不起作用 我只为图像编写了代码 但对音频剪辑一无所知 请让我知道我在哪里犯了错误 import java applet import java awt import java ne
  • 在ES6类中使用EventEmitter

    我正在尝试让我自己的类中的 EventEmitter 在 ES6 中运行 use strict const EventEmitter require events class Client extends EventEmitter cons
  • 如何在 SwiftUI 中使列表反转

    我是 SwiftUI 的新手 正在尝试制作类似的东西reverse在安卓中LinearLayoutManager messagesRecyclerView view findViewById R id messagesRecyclerVie
  • 如何确定 QTextDocument 的高度?

    给定一个特定的宽度 我想找出一个的高度QTextDocument 换句话说 如果QTextEdit其中包含QTextDocument is w宽 最小高度是多少h为了完全显示文档而不需要滚动条 将 QTextDocument 对象的宽度设置
  • log4net - 想要为每个Web应用程序用户创建一个日志文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们在 Asp Net Web 应用程序中使用 log4net 替换 nLog nLog 有一个有用的功能 允许我们为每个用户创建一个
  • 定位上下文菜单

    我正在尝试使用 jQuery 定位自定义上下文菜单 第一次它出现在正确的位置 鼠标坐标 但随后当前位置与新位置相加 以便菜单从屏幕上消失 这是 JavaScript
  • Div 100% 高度,内嵌显示

    我需要有 2 列divs 右栏将有一个随机内容 可能有 1 行或 100 行 我想在没有 JavaScript 的情况下跟随右列的高度 我正在尝试这个 div div style display inline block width 30
  • 为 python 2.7 安装 scipy

    我似乎无法让 SciPy 在 32 位 Windows XP 平台上为 Python 2 7 工作 我宁愿不构建自己的副本 有谁知道我在哪里可以找到它的安装程序 我试过这个site http www lfd uci edu gohlke p
  • 方括号在 SQL 查询中有效吗?

    我正在看某人写给我的一张便条 它看起来像这样 SELECT Something FROM Foobar WHERE blah blah pulls this too SELECT Something FROM Foobar WHERE so
  • 如何确定时钟的秒针是否位于较大区域或较小区域[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我得到的时间格式如下 hh mm ss 我必须找出在给定的时间内 秒针是否位于时针和分针形成的较大或较小的区域中 我知道
  • 如何从 C 中的浮点数中提取有偏差的指数?

    我在从浮点数中查找有偏差的指数时遇到问题 我不明白为什么我为参数输入的任何数字都返回 0 这是我的代码 iFloat t floatGetExp iFloat t x return x gt gt 23 0x7f800000 浮点数的指数是