问题标签 [ieee-754]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
3990 浏览

c++ - IEEE - 754 - 查找符号位、指数、frac、归一化等

我将一个 8 位十六进制数作为 IEEE 754 位浮点数,我想打印有关该数字的信息(符号位、expbits、fractbits、规范化、非规范化、无穷大、零、NAN)浮点应该是一个。

我阅读了位移位,我认为这就是我应该这样做的方式?但是,我不是 100% 确定。我知道符号位位于数字的最左侧。这表示正面或负面。我要转移多少才能找到每个?我只是不断移动它来找到每一个吗?有人可以解释我如何找到每一个吗?

我会移动 1 以找到符号位吗?我会移动 8 以获得指数吗?我会移动 23 来获得压裂吗?

符号位应为零

expbits 应该是 128

我认为 fracbits 应该是 0x00000000...

如果是这样,我转移后如何测试它?

这就是我到目前为止所拥有的

我的输入(scanf)关于我想要它的方式..

这就是它在做什么..

0 投票
2 回答
5726 浏览

c - 浮点运算中的清零行为

虽然,据我所知,IEEE 754 没有提及刷新为零模式以更快地处理非规范化数字,但某些架构提供了这种模式(例如http://docs.sun.com/source/806-3568/ncg_lib .html)。

在本技术文档的特定情况下,非规范化数字的标准处理是默认设置,并且必须明确激活清零。在默认模式下,非规范化数字也在软件中处理,速度较慢。

我致力于嵌入式 C 的静态分析器,它试图预测运行时可能发生的值的正确(如果有时不精确)范围。它旨在正确,因为它旨在用于排除在运行时出错的可能性(例如对于关键的嵌入式代码)。这需要在分析期间捕获所有可能的行为,因此需要在浮点计算期间捕获所有可能的值。

在这种情况下,我的问题是双重的:

  1. 在嵌入式架构中,是否有仅提供清零的架构?他们也许不必将自己宣传为“IEEE 754”,但可以提供足够接近的 IEEE 754 风格的浮点运算。

  2. 对于同时提供两者的架构,在嵌入式环境中,系统是否不会激活刷新为零,以使反应时间更可预测(这些嵌入式系统的常见约束)?

如果我知道我必须这样做,那么在我用于浮点值的区间算术中处理清零很简单,我的问题更多是我是否必须这样做。

0 投票
1 回答
2506 浏览

c# - 如何从二进制数据中读取 64 位 IEEE 标准 754 双精度数?

我有一个由 64 位 IEEE 标准 754 浮点数组成的数据流。在使用 C# 时,我如何将它们读作双打?有没有办法将 long/ulong 转换为 double ?

0 投票
3 回答
2604 浏览

ieee-754 - 关于二进制补码和 IEEE 754 表示的问题

我将如何找到两字节二进制补码值 0xFF72 的值是“?

  1. 我会先将 0xFF72 转换为二进制吗?
  2. 反转位。
  3. 二进制加 1。//在这里丢失。
  4. 写十进制。

我只是不知道..

还,

一个 8 字节的 double 值怎么样:0x7FF8000000000000。它作为浮点的值?

0 投票
3 回答
2640 浏览

c++ - 将 float 转换为 bigint(也就是获取二进制指数和尾数的便携式方法)

在 C++ 中,我有一个 bigint 类,它可以保存任意大小的整数。

我想将大浮点数或双精度数转换为 bigint。我有一个工作方法,但它有点黑客。我使用 IEEE 754 数字规范来获取输入数字的二进制符号、尾数和指数。

这是代码(这里忽略符号,这并不重要):

它可以工作,但它相当丑陋,我不知道它的便携性如何。有一个更好的方法吗?有没有一种不那么丑陋、便携的方法来从浮点数或双精度数中提取二进制尾数和指数?


感谢您的回答。对于后代,这是使用 frexp 的解决方案。由于循环,它的效率较低,但它适用于浮点数和双精度数,不使用 reinterpret_cast 或依赖于浮点数表示的任何知识。

0 投票
7 回答
953 浏览

64-bit - 64 位浮点数在所有现代 PC 上的行为是否相同?

我想知道我是否可以假设对相同 64 位浮点数的相同操作在任何现代 PC 和最常见的编程语言中给出完全相同的结果?(C++、Java、C# 等)。我们可以假设,我们正在对数字进行操作,结果也是一个数字(没有 NaN、INF 等)。

我知道有两个非常相似的使用浮点数的计算标准(IEEE 854-1987 和 IEEE 754-2008)。但是我不知道它在实践中如何。

0 投票
3 回答
2892 浏览

java - 其他 NaN 值是什么?

文档java.lang.Double.NaN说它是

一个保持类型为非数字 (NaN) 值的常量double。它相当于返回的值Double.longBitsToDouble(0x7ff8000000000000L)

这似乎暗示还有其他人。如果是这样,我如何获得它们,这可以便携吗?

为了清楚起见,我想找到这样的doublex

都是真的。

0 投票
4 回答
10304 浏览

c++ - 是否有 IEEE-754 操作的开源 c/c++ 实现?

我正在寻找 IEEE-754 操作的参考实现。有这样的事吗?

0 投票
4 回答
1512 浏览

.net - CLR JIT 优化违反因果关系?

我正在为一位同事写一个有启发性的示例,向他展示为什么测试浮点数是否相等通常是一个坏主意。我使用的示例是添加 0.1 十次,并与 1.0(我在介绍性数字课程中展示的那个)进行比较。我惊讶地发现这两个结果是相等的(代码+输出)。

一些调查表明,这个结果不能被依赖(很像浮动平等)。我发现最令人惊讶的是,在其他代码之后添加代码可能会改变计算结果(代码+输出)。请注意,此示例具有完全相同的代码和 IL,但多了一行 C#。

我知道我不应该在浮点数上使用相等,因此不应该太在意这一点,但我发现这非常令人惊讶,就像我向所有人展示过的一样。在执行计算后做一些事情会改变前面计算的值?我不认为这是人们通常想到的计算模型。

我并没有完全被难住,假设在“相等”情况下发生某种优化会改变计算结果(在调试模式下构建可以防止“相等”情况),这似乎是安全的。显然,当 CLR 发现它稍后需要对浮点数进行装箱时,就会放弃优化。

我搜索了一下,但找不到这种行为的原因。任何人都可以提示我吗?

0 投票
2 回答
695 浏览

language-agnostic - 对于 IEEE-754,0 < ABS(const) < 1,(x / const) * const 是否保证为 X 的不同值返回不同的结果?

假设我执行此操作:

使用由 定义的双精度参数IEEE 754-2008,首先除法,然后是乘法。

const在范围内0 < ABS(const) < 1

假设操作成功(没有发生溢出),X该操作的不同参数是否保证返回不同的结果?

换句话说,有没有X1X2等等0 < ABS(const) < 1X1 <> X2但是(X1 / const) * const = (X2 / const) * const