以 3490593
这个整型数为例,如果将其转化为单精度浮点数,它在计算机中是以怎样的格式进行存储的?
一个单精度浮点数在计算机中占用 4 个字节, 32 位。
根据 IEEE 754 标准,一个浮点数 V 在计算机中是以如下格式存储的: $$V=(-1)^{s}\times M\times2^{E}$$ 其中,对于单精度浮点数来说(仅位数不同):
s
为符号位,由最高位表示,占用 1 位。M
为尾数,占用 23 位。E
为阶码。
首先我们将 3490593
转换为二进制表示:
|
|
一共有 21 位。
由于其并不接近于 0,因此用规格化(Normorlized)表示法,具体表示为 1.10101000110001000001 × 2^21
。
IEEE 754 标准中尾数 M 的值规定了一个隐藏的开头的 1,因此上述表示中的小数点之后的那些二进制数 10101000110001000001
(共 20 位),就是 M 的实际大小。不过由于 M 的位数规定 23 位,所以我们我们需要在其后补充 3 个 0 。因此最后的 M 的值为 10101000110001000001000
。
由 2^21 可以得出,阶码 E 为 21 位,加上 127 的偏置之后就成了 148,其二进制表示为 10010100
。偏置是为了更好地表示负数。
这样一来,3490593
这个数最终在内存中的存储即为:
0 10010100 10101000110001000001000
(s E M,空格分隔不同的部分)。
这个数 8 位一组用 16 进制表示为 4A 56 45 04
。