IEEE-754 binary32 编码
0.2730 的符号为正,因此 IEEE-754 binary32 格式的符号位将为零。
接下来,用 2 的幂表示具有显式缩放的数字: 0.2730 = 0.2730 • 2 0。在此,我们将“•” (0.2730) 之前的部分称为有效数字,而 2 的幂是指数。
然后,调整此表示以使有效数字至少为 1 且小于 2。允许的调整是将指数调整为增量 1,并相应地将有效数字乘以或除以 2:0.2730 • 2 0 = 0.5460 • 2 -1 = = 1.0920 • 2 -2。
这称为规范化形式。这种形式的指数 -2 用于编码。为了在指数位中对其进行编码,我们添加了格式的固定偏差 127,并将结果写入 8 位二进制。−2 + 127 = 125,二进制的 125 是 01111101。
接下来,将二进制有效数字写入至少 24 位:1.0920 = 1.00010111100011010100111 11101111100111011...<sub>2。粗体显示前 24 位数字。我们只能使用 IEEE-754 binary32 格式的 24 位数字,并且我们看到剩余部分在第 24 位数字的一半以上,因此我们将四舍五入,产生 1.00010111100011010101000 2。那是我们二进制的有效数字。(有关执行此操作的信息,请参阅下面的“十进制到二进制”。)
为了对有效数字进行编码,我们使用“.”后面的 23 位数字。(已知前导数字为 1,因为我们将数字归一化以使其如此,因此它不需要包含在主要对有效数字进行编码的位中。)这些位是 00010111100011010101000。
然后我们将符号、指数和有效位放在一起:0 01111101 00010111100011010101000。
十进制转二进制
要将十进制数字 1.0920 转换为二进制:
- 写下开头的“1”并将其删除,得到 0.0920。乘以 2,得到 0.1840。还要写“。” 因为我们从这一点开始。
- 写入前导“0”并将其删除,得到 0.1840。乘以 2,得到 0.3680。
- 写入前导“0”并将其删除,得到 0.3680。乘以 2,得到 0.7360。
- 写入前导“0”并将其删除,得到 0.7360。乘以 2,得到 1.4720。
- 写下前导“1”并将其删除,得到 0.4720。乘以 2,得到 0.9440。
根据需要继续。