c - MIL-STD-1750A 到十进制转换示例

标签 c floating-point floating-accuracy floating-point-precision

我正在查看 1750A format webpage 中的一些示例有些例子并没有真正的意义。我在这篇文章的底部包含了 1750A 格式规范,以防有人不熟悉它。

以 1750A 格式网页的表 3 为例:

.625x2^4 = 5000 00 04

二进制5000 00 040101 0000 0000 0000 0000 0000 0000 0100

如果将其转换为十进制,它不等于 10,即 0.625x2^4。也许我转换错误。

取尾数101 0000 0000 0000 0000 0000并减去1,得到100 1111 1111 1111 1111 1111。然后翻转这些位,得到 011 0000 0000 0000 0000 0000。将小数移动 4 位(因为我们的指数 0100 是 4),得到 0110.0000 0000 0000 0000 000。这等于 6.0,而不是 0.625x2^4。

我相信实际值应该是十六进制的 0011 0000 0000 0000 0000 0000 0000 0100030000004

其他人能否证实我的怀疑,即上面 1750A 格式页面的表 3 中该值标记不正确?

谢谢

1750A

最佳答案

作为 explained previously ,符号+尾数被解释为 -1 和 +1 之间的 2 补码值。

在你的例子中,它是 0.101000000...(base-2)。即 1/2 + 1/8 = 0.625(以 10 为底)。

关于c - MIL-STD-1750A 到十进制转换示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14611450/

相关文章:

visual-studio - Visual Studio 2008 和 2013 之间的浮点不匹配

c++ - 从最低值开始遍历所有可能的浮点值

c - 警告 : declaration of `lr_searchReplace' does not match previous declaration at vuser_init. c (941)

c - 从 C# 的背景学习 C

c - C语言中多维数组指针的工作原理

c - 如何计算字符串中未知数量的 float

c - 如何从C中的包头数据中获取参与ARP的机器的MAC地址和IP地址?

Java : How to sort an array of floats in reverse order?

c++ - 计算这个平方根时,什么被认为是 IEEE-754 正确的结果?

c - pow和powf有什么区别