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

Converting a decimal number to floating point notation and IEEE 754 format

我正在为我的 类 之一做作业,我被这两个问题困住了:

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

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

首先,浮点数表示法分为三部分。符号部分,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(分隔 sign/exponent/mantissa 字段的垂直条)或 0x00081800