计算机中,浮点数的标准格式
32位:| s(1) | E(8) |M(23) |
64位:| s(1) | E(11) |M(52) |
s:尾数符号,1或者0
M:尾数,纯小数表示,小数点放在尾数域的最前面,采用原码表示。
E:阶码,采用移码表示。
阶符采用隐含方式,即采用移码方法来表示正负指数。
一个规格化的32位的浮点数的真值为:
x =(-1)s *(1.M)
* 2^(E-127) e=E–127
一个规格化的64位的浮点数的真值为:
x =(-1)s
*(1.M) * 2^(E-1023)
e =E– 127
这个E为机器数(10000010,E=130)
例:若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。
解:
0100,0001,0011,0110,0000,0000,0000,0000
数符:0
阶码:1000,0010
尾数:011,0110,0000,0000,0000,0000
指数e=阶码-127=10000010-01111111=00000011=(3)
包括隐藏位1的尾数:
包括隐藏位1的尾数:
1.M=1.011
0110 0000 0000 0000 0000=1.011011
于是有 x=(-1)s×1.M×2^e
=(1.011011)×2^3=1011.011=(11.375)
例:将十进制数-0.75表示成单精度的IEEE 754标准代码。
解:-0.75 = -3/4 = -0.11 = -1.1×2^-1
=(-1)^1×(1 + 0.1000 0000 0000 0000 0000 000)×2^-1
=(-1)^1×(1 +0.1000 0000 0000 0000 0000 000)×2^(126-127)
s=1,E=126 = 01111110,M=1000…
000。
1 011,1111,0100,0000,0000,0000,0000,0000
关于浮点数的加减,下次在继续说。