将十进制数转换为浮点表示法和 IEEE 754 格式



我正在为我的一个班级做作业,我被困在这两个问题上:

  1. 使用二进制浮点表示法表示十进制 -412.8,使用 11 个小数位 指数的有效数和 3 位数字,无偏差

我想我设法解决了它,但我的指数有 4 位而不是 3 位。我真的不明白如何仅使用 412.8 位指数将 -3 转换为浮点表示法。这是我尝试解决它的方法:

首先,浮点符号有三个部分。符号部分,0 表示正数,1 表示负数,指数部分,最后是尾数。在这种情况下,尾数包括前导的 1。由于数字为负数,因此符号位将为 1。对于尾数,我首先将 412.8 转换为二进制,这给了我 110011100.11,然后我把小数点向左移动了 8 次,得到了 1.1001110011。因此,尾数是1100 1110 011(老师问的11位(。最后,指数将是 2^8,因为我将小数向右移动了 8 次。8 是二进制中的 1000。那么我假设我的浮点符号应该是 1 1000 11001110011是否正确?

  1. 以单精度 IEEE 754 格式表示十进制数 16.1875×2-134。 我完全被困在这个上面。我不知道如何转换这个数字。当我在 wolfram 中输入它时,十进制数远远超出了单精度格式的限制.我确实知道符号位将是 0,因为数字是正数。我不知道尾数是什么,也不知道如何找到它。我也不知道如何找到指数。有人可以指导我解决这个问题吗?谢谢。

对于 1,您似乎是正确的 - 没有办法在 3 位中无偏地重新发送指数。 当然,问题说"3 位数字"并没有定义数字的基数......

2 相对简单 - 将值转换为二进制得到 10000.0011,然后规范化,得到 1.00000011×2-130。 现在 -130 对于单精度指数来说太小了(最小值为 -126(,因此我们必须非规范化(继续移动点以获得 -126 的指数(,这给我们 0.000100000011×2-126。 这就是我们的尾数(去掉 0(和一个指数字段 0:0|00000000|00010000001100000000000(分隔符号/指数/尾数字段的垂直条(或0x00081800