定点数和浮点数
任何一个数均可以表示为:(N)R=±S×R±e
R:基值。计算机中常用的R可取2、8、10、16等。
S:尾数。代表数N的有效数字。计算机中一般表示为纯小数。
e:阶码(指数)。代表数N的小数点的实际位置。一般表示为纯整数。
一、定点数
定点数:约定计算机中所有数据的小数点位置均是相同的,而且是固定不变的,即阶码e的取值固定不变的机器数表示。
定点数的两种表示方法:
定点小数:e=0,表示纯小数,小数点在符号位与最高数值位之间。 定点整数:e=n,表示纯整数,小数点在最低有效数值位之后,在最低位的右边,不占位
【例】
(123.45)10 = 0.12345×103 = 12345×10-2
(11011.101)2 = 0.11011101×105 = 11011101×2-3
二、浮点数
浮点数用类似(N)R=±S×R±e科学计数法来表达,比如1001.101的规范浮点数表达为1.001101×23
浮点数的小数点位置不是固定,而是可以浮动的,即e的取值可变。利用改变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