3.3 存储实数
实数是带有整数部分和小数部分的数字。
实数通常采用浮点表示法。
浮点表示法的一个数字分为三个部分:符号,位移量,定点数。
例如:6780000 = +6.78* 三部分为:符号(+),位移量(6),定点数(6.78)
3.3.1 浮点表示法的规范化
科学记数法(用于十进制)和浮点表示法(用于二进制)的结果中,定点数都是在小数点左边保留一位非零整数。
十进制:±d.xxxxxx d:1~9,x:0~9
二进制:±1.yyyyyy y:0~1
二进制数规范化之后,浮点表示法只存储这个数的三部分信息:符号,指数和尾数(小数点右边的位)
例如:+1000111.0101
规范化:+1.0001110101*
符号:+
指数:6
尾数:0001110101
3.3.2 浮点表示法的存储
符号:
用一个二进制位来存储(0或1)。指数:
指数采用余码来存储。尾数:
尾数作为无符号整数存储。
3.3.3 余码系统
指数是有符号的数,在余码系统中,正的和负的整数都可以作为无符号数存储。余码系统将要存储的数字加上一个偏移量,然后再存储。
偏移量为: ,m为指数部分的位数
例如:如果用4位存储单元存储指数,偏移量为7,也称为余7码

3.3.4 IEEE标准 – 单精度和双精度浮点表示法
单精度使用32位存储:符号1位,指数8位(偏移量127),尾数23位。也称为余127码。
双精度使用64位存储:符号1位,指数11位(偏移量1023),尾数52位。也称为余1023码。
单精度和双精度对比
3.3.5 IEEE标准浮点数的存储
在S中存储符号,0:正数;1:负数;
将数字转换为二进制;
规范化;
找到E和M的值;
连接S,E和M。
举例: 将5.75用单精度方法存储
符号为正,S = 0
十进制转换为二进制:5.75 =
规范化: =
E = 2+偏移量 = 2+127 = 129 =
M=,M不足23位,右边补0连接S,E,M:
0 10000001 01110000000000000000000
3.3.6 IEEE标准浮点数还原
找到S,E和M的值;
如果S=0,符号为正,否则为负;
计算指数,指数=E-127(或=E-1023);
对尾数去规范化;
将去规范化的数字变为二进制以求出绝对值;
加上符号。
举例:
1100 1010 0000 0000 0111 0001 0000 1111
= -2104387.75
3.3.7 浮点数的溢出
浮点数有上溢和下溢两种情况。该表示法不能存储很小或很大的绝对值。
0的存储:S,E和M都为0。

3.3.8 浮点数的精度
5.0000001=?
5.0000002=?
5.0000003=?
= 8388608
单精度浮点数的精度为:6~7位有效数字
= 4503599627370496
双精度浮点数的精度为:15~16位有效数字