问题标签 [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.
c++ - 将 32 位浮点数打包成 30 位(c++)
以下是我正在努力实现的目标:
- 我需要将 32 位 IEEE 浮点数打包成 30 位。
- 我想通过将尾数的大小减少 2 位来做到这一点。
- 操作本身应该尽可能快。
- 我知道会丢失一些精度,这是可以接受的。
- 如果此操作不会破坏 SNaN、QNaN、无穷大等特殊情况,这将是一个优势。但是我准备牺牲这个速度。
我想这个问题包括两部分:
1)我可以简单地清除尾数的最低有效位吗?我已经尝试过了,到目前为止它可以工作,但也许我是在自找麻烦......比如:
2) 如果在某些情况下 1) 会失败,那么实现这一目标的最快方法是什么?
提前致谢
c++ - C++ 中浮点到基数 2 科学记数法(IEEE 32 位)的算法或代码?
我将浮点数作为输入,然后以 2 为底的科学记数法输出其等效表示。这是 IEEE 32 位,具有:31 个符号位、23-30 指数(带有 127 偏移)、0-22 尾数(带有隐式前导 1)。
我不确定其含义的条件之一是“您的尾数应该有隐含的前导 1 前置”。
我真正学到的只是将浮点数分解为十进制和小数部分,并分别获得它们的二进制表示。
由于我不确定如何执行此操作...我无法真正编写代码。我将不胜感激有关某种算法或代码本身的任何提示或信息。谢谢。
样本:
编辑:127 偏移量意味着超过 127 符号对吗?我的书只有超过128,但无论如何我都不知道有什么区别......
numbers - 为什么我们有“不是数字”(isNan)函数?
许多语言都有 isNaN() 函数。我在问自己:为什么要检查不是数字?
原因是纯粹合乎逻辑的还是检查not a number而不是is a number更快?
请注意,这是一个纯粹的理解问题。例如,我知道我可以否定 isNaN() 来实现 isNumber() 函数。
但是我正在寻找为什么我们不检查数字的原因?
assembly - 将IEEE浮点十六进制转换为十进制?
如果我有一个 IEEE 浮点十六进制 42F6E979,如何将其转换为十进制?我相信十进制表示 = 123.456001
floating-point - 为什么对双精度值的运算不能给出预期的结果?
2.14656
0.14656000000000002
怎么回事?
java - 如何通过最小增量改变双倍
有什么东西坏了还是我不明白发生了什么?
带输出:
c++ - 将双常量定义为十六进制?
我希望将最接近的低于 1.0 的数字作为浮点数。通过阅读维基百科关于IEEE-754的文章,我设法发现 1.0 的二进制表示是3FF0000000000000
,因此最接近的双精度值实际上是0x3FEFFFFFFFFFFFFF
。
我知道用这个二进制数据初始化双精度的唯一方法是:
使用起来相当麻烦。
如果可能的话,有没有更好的方法来定义这个双数?
c++ - 在浮点标准之间转换
我正在尝试将基于 IEEE 的浮点数转换为 MIL-STD 1750A 浮点数。
我附上了两者的规范:
我了解如何按照维基百科上的示例以 IEEE 格式分解浮点 12.375 。
但是,我不确定我对 MIL-STD 的解释是否正确。
12.375 = (12)b10 + (0.375)b10 = (1100)b2 + (0.011)b2 = (1100.011)b2 (1100.011)b2 = 0.1100011 x 2^4 => 指数,E = 4。
归一化 2 的补码中的 4 = (100)b2 = 指数
因此 MIL-STD 1750A 32 位浮点数为:
我的上述解释正确吗?
对于-12.375,它只是交换的符号位吗?IE:
或者分数部分会发生什么奇怪的事情?
standards - IEEE 双精度
标准 IEEEDoublePrecision 标准
中显示的最大和最小数字是多少?如何?
ms-access - 在 VBA 中模拟 IBM 浮点乘法/加法
我正在尝试在 Access 2003 或 Access 2010 环境中模拟(不再存在的)大型机报告生成器。它生成的数据必须与 70 年代初的纸质报告完全匹配。不幸的是,最早几年的数据是在使用 IBM 浮点表示而不是 IEEE 的硬件上运行的。在 Google 的帮助下,我找到了一个 VBA 函数库,可以将浮点数从十进制转换为 IEEE 754 32 位二进制格式。我不得不修改库以接受 32 位或 64 位浮点数,因此我对浮点格式有一定的工作知识,但是,我在从 IEEE 到 IBM 二进制格式的转换以及乘法和加法方面遇到了麻烦IBM 或 IEEE 编号。
我还没有打开任何其他库来在 VBA 中执行这种转换和算术运算 - 有没有更简单的方法来解决这个问题,或者我没有找到现有的库?做不到这一点,对相关算法的清晰和直接的解释?
提前致谢。