1、浮点编码还原为真实二进制数
1.1、举例1:float型浮点数的编码形式如下,试还原为真实浮点数
规约数
0 1110 0011 0000 0000 0000 0000 0000 000(共32位)
分析步骤:
(1)判断是32位单精度还是64位双精度
float型共32位,其中符号位S占据最高位的1位,偏移指数E占据其后的8位(即w = 8),末尾有效数字段T占据最后的23位(即t =23)。
(2)判断类型
由于E所在8位不全为0,也不是全为1,所以该数是一个规约数。
(3)计算真实指数e
由于E = 1110 00112 = 227,因此,真实指数e = E - bias = 227-127 = 100
(4)计算尾数m
T = 0000 0000 0000 0000 0000 000(末尾23位全为0),但由于规约数隐含的最高有效位为1,即d0 = 1,因此,其尾数应在T的前面加上隐藏了的最高位1,因此,尾数m = 1.0000 0000 0000 0000 0000 000
(5)还原后的真实二进制数是(判断出是规约数后,也可直接使用公式还原)
1.2、举例2:float型浮点数的编码形式如下,试还原为真实浮点数
非规约数
0 0000 0000 0000 0000 0000 0000 1100 000(共32位)
分析过程:
(1)判断类型
由于E所在8位全为0,T所在23位非0,所以该数是一个非规约数。
(2)最高位0表示符号位S
(3)计算e
由于该数是非规约数,因此,e为e = emin = 0 - (2w-1 - 1) + 1 = -126
(4)计算m
由于T = 0000 0000 0000 0000 1100 000,且是非规约数,因此,尾数应在T前面加上隐藏了的最高位0,即d0 = 0,因此,尾数m = 0.0000 0000 0000 0000 1100 000
(5)还原后的真实二进制数