这个我知道:
任意一个十进制数 N 可以写成
N=10E.M (2.3)
同样,在计算机中一个任意进制数 N 可以写成
N=Re.m (2.4)
m :尾数,是一个纯小数。
e :比例因子的指数,称为浮点的指数,是一个整数。
R :比例因子的基数,对于二进计数值的机器是一个常数,一般规定R 为2,8或16。
一个机器浮点数由阶码和尾数及其符号位组成(尾数:用定点小数表示,给出有效数字的位
数决定了浮点数的表示精度;阶码:用整数形式表示,指明小数点在数据中的位置,决定了浮点
数的表示范围。):
32位的浮点数中,S:浮点数的符号位,1 位,0表示正数,1表示负数。M:尾数,23位,
用小数表示,小数点放在尾数域的最前面。E:阶码,8 位阶符采用隐含方式,即采用移码方
式来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大
者其指数值也大。采用这种方式时,将浮点数的指数真值e 变成阶码E 时,应将指数 e 加上
一个固定的偏移值127(01111111),即 E=e+127.
[例1] 若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。
[解:]
将十六进制数展开后,可得二进制数格式为
指数e=阶码-127=10000010-01111111=00000011=(3)10
包括隐藏位1的尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011
于是有
x=(-1)s×1.M×2e
=+(1.011011)×23=+1011.011=(11.375)10
[例2] 将十进制数数20.59375转换成32位浮点数的二进制格式来存储。
[解:]
首先分别将整数和分数部分转换成二进制数:
20.59375=10100.10011
然后移动小数点,使其在第1,2位之间
10100.10011=1.010010011×24 e=4
于是得到:
S=0, E=4+127=131, M=010010011
最后得到32位浮点数的二进制存储格式为:
0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16