你好,我需要用IEEE格式存储0.2730。现在我所做的是将sing设置为0,因为这个数字是正数。现在,我想,因为什么是在点之前是0,那么我不需要做任何转换,因为0在二进制中,它只是0,所以指数将最终是0,我只需要将127转换为二进制。当我寻找Mantissa时,我试着做模式,当我把十进制部分乘以2,并取出之前的数字,我找不到模式,也没有达到0,所以我做的只是乘法,直到我发现23位。现在当我查到实际值时,它说指数应该是125,而这个数字实际上是0 0111 0001 0111 1000 1101 0101 000。现在我不知道为什么要从指数中减去2,因为我觉得在做乘2模式的时候,我不用动点,也不用什么时候停止。我留了一张我的作品图片,以防对你有帮助。先谢谢你,希望你做得很好
0.2730的符号是正数,所以IEEE-754 binary32格式的符号位将为0。
接下来,用2的幂来表示这个数字:0.2730 = 0.2730 - 2。0. 其中,我们把"-"(0.2730)之前的部分称为"-"。意义,而2升到的幂是。指数.
允许的调整方法是以1为增量调整指数,并将指数乘以或除以2。0.2730 • 20 = 0.5460 • 2−1 = = 1.0920 • 2−2.
这就是所谓的归一化形式。这种形式中的指数,-2是用来编码的。为了用指数位进行编码,我们加上格式的固定偏置,127,并将结果写成8位二进制。-2+127=125,二进制的125就是01111101。
接下来,将二进制中的意义位写成至少24位。1.0920 = 1.0001011110001101010011111101111100111011…2. 粗体显示的是前24位数字。在IEEE-754二进制32格式中,我们只能使用24位数字,而我们看到剩余的部分在24位的一半之上钍 位数,所以我们将四舍五入,产生1.00010111100011010101000。2. 这就是我们的二进制意义。(具体操作方法请看下面的 "十进制转二进制")。
为了对意义进行编码,我们使用". "后面的23位数字(前导数是已知的,因为我们将数字规范化,所以它不需要包含在编码意义的位中)。这些位是00010111100011010101000。
然后我们把符号、指数和意义位放在一起。0 01111101 00010111100011010101000.
将十进制数字1.0920转换为二进制。
根据需要继续进行。
很难看出你图片中的内容,但这是你的数字的二进制布局。0.2730
作为单精度和双精度的IEEE-754表示。希望你可以用它来仔细检查你的答案。如果你有一个不匹配的问题,请随时提出一个更具体的问题。
这里是 0.2730
以单精度(32位)IEEE-754表示。
3 2 1 0
1 09876543 21098765432109876543210
S ---E8--- ----------F23----------
Binary: 0 01111101 00010111100011010101000
Hex: 3E8B C6A8
Precision: SP
Sign: Positive
Exponent: -2 (Stored: 125, Bias: 127)
Hex-float: +0x1.178d5p-2
Value: +0.273 (NORMAL)
这里也是一样,这次是双精度(64位)IEEE754表示法。
6 5 4 3 2 1 0
3 21098765432 1098765432109876543210987654321098765432109876543210
S ----E11---- ------------------------F52-------------------------
Binary: 0 01111111101 0001011110001101010011111101111100111011011001000110
Hex: 3FD1 78D4 FDF3 B646
Precision: DP
Sign: Positive
Exponent: -2 (Stored: 1021, Bias: 1023)
Hex-float: +0x1.178d4fdf3b646p-2
Value: +0.273 (NORMAL)