任何一个数均可以表示为:(N)R=±S×R±e
R:基值。计算机中常用的R可取2、8、10、16等。
S:尾数。代表数N的有效数字。计算机中一般表示为纯小数。
e:阶码。代表数N的小数点的实际位置。一般表示为纯整数。
一、定点小数
定点小数:约定计算机中所有数据的小数点位置均是相同的,而且是固定不变的,即阶码e的取值固定不变的机器数表示。
定点小数的两种表示方法:
e=0,表示纯小数,小数点在符号位与最高数值位之间。 e=n,表示纯整数,小数点在最低有效数值位之后
【例】
(123.45)10=12345×10-2=0.12345×103
(11011.101)2=11011101×2-3=0.11011101×105
二、浮点小数
浮点小数的小数点位置不是固定,而是可以浮动的,即e的取值可变,因此在机器中必须将e表示出来,浮点小数的表示如图
尾数的位数决定了数据表示的精度,为带符号的纯小数。
阶码的位数决定了数据表示的范围,为带符号的纯整数。
三、浮点数的规范化
(1)如何尽可能多地保留有效数字?
(2)如何保证浮点表示地唯一?
规格化思想:尽可能去掉尾数中的前置“0”,尽量使小数点后第一位为“1”。对于二进制数,就是要满足:1/2≤|S|<1
【例】0.001001×25的规格化
0.001001×25规格化表示为:0.100100×23
四、原码规格化
若[S]原=Sf.S1S2..Sn,规格化标志是:S1=1,即:[S]原=0.1xx...x 或 [S]原=1.1xx...x。
【例】
[S]原=0.1101101 → [S]原=1.1101101 是规格化数
[S]原=0.0101101 → [S]原=1.0101101 不是规格化数
五、补码规格化
若[S]补=Sf.S1S2..Sn,规格化标志是:Sf⊙S1=1,即:[S]补=0.1xx...x 或 [S]补=1.0xx...x。⊙指异或运算
【例】
[S]补=0.1101101 → [S]补=1.0101101 是规格化数
[S]原=0.0101101 → [S]原=1.1101101 不是规格化数
六、IEEE 754浮点数标准
IEEE 754标准在表示浮点数时,每个浮点数均由三部分组成:符号位S,指数部分E和尾数部分M。
32位单精度浮点数表示格式如图
S:数符,0表示“+”,1表示“-”。
E:指数,即阶码部分。其中包括1位阶符和7位数值。采用移127码表示,移码值为127。即 阶码=127+实际指数值
M:共23位。由于尾数采用规格化表示,所以IEEE 754 标准约定在小数点左部有一位隐含位为1,从而使尾数的实际有效位为24位,即尾数的有效值为1.M。
【例】利用IEEE 754标准将数176.0625表示为单精度浮点数
解析: ①将十进制转换二进制数:(176.0625)10=(10110000.0001)2
②对二进制数进行规格化处理:10110000.0001=1.01100000001×27
③将小数部分扩展为单精度浮点数所规定的23位尾数为0110,0000,0010,0000,0000,000
④求阶码,指数为7位数值,偏移量为127。E=7+127=134=(10000110)移
最后176.0625的单精度浮点数表示为:0 10000110 0110,0000,0010,0000,0000,000