gpt4 book ai didi

将 IEEE 754 float 转换为 MIL-STD-1750A float

转载 作者:太空狗 更新时间:2023-10-29 15:41:04 29 4
gpt4 key购买 nike

我正在尝试将 IEEE 754 32 位单精度浮点值(标准 c 浮点变量)转换为格式为 MIL-STD-1750A 的无符号长变量.我在文章底部包含了 IEEE 754 和 MIL-STD-1750A 的规范。现在,我的代码在转换指数时遇到问题。我也看到了转换尾数的问题,但我还没有解决这些问题。我正在使用上面链接中表 3 中列出的示例来确认我的程序是否正确转换。其中一些示例对我来说没有意义。

  1. 这两个例子怎么会有相同的指数?

    .5 x 2^0 (0100 0000 0000 0000 0000 0000 0000 0000) 
    -1 x 2^0 (1000 0000 0000 0000 0000 0000 0000 0000)

    .5 x 2^0 有一位小数,-1 没有小数位,所以 .5 x 2^0 的值应该是

    .5 x 2^0 (0100 0000 0000 0000 0000 0000 0000 0010)

    对吧? (0010而不是0001,因为1750A用的是plus 1 bias)

  2. 上一个例子怎么能用完所有的32位,而且首位为1,表示负值呢?

    0.7500001x2^4 (1001 1111 1111 1111 1111 1111 0000 0100)
  3. 我可以看到指数为 127 的值应该是 7F (0111 1111) 但指数为负的 127 的值呢?会是 81 (1000 0001) 吗?如果是,是不是因为那是 127 的补码 +1?

谢谢

1750ASpecification

最佳答案

1) How can these two examples have the same exponent?

据我了解,符号和尾数有效地定义了 [-1.0,1.0] 范围内的 2 的补码值。

当然,这会导致冗余表示(0.125*21 = 0.25*20 等)因此,通过禁止尾数,选择了规范的归一化表示[-0.5,0.5] 范围内的值。

因此在您的两个示例中,-1.0 和 0.5 都属于“允许的”尾数范围,因此它们共享相同的指数值。

2) How can the last example use all 32 bits and the first bit be 1, indicating a negative value?

我觉得这不对;你是如何获得这种表现的?

3) What about a value with a negative 127 exponent? Would it be 81 (1000 0001)?

我相信是的。

关于将 IEEE 754 float 转换为 MIL-STD-1750A float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14562997/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com