【计算机组成原理】16-定点数与浮点数
一、定点数的表示方法
(1)纯小数
乘以比例因子以满足定点数保存格式
(2)纯整数
小数点在后面
二、浮点数的表示方法
◆ 计算机处理的很大程度上不是纯小数或纯整数
◆ 数据范围很大,定点数难以表达
(1)浮点数的表示格式
科学计数法
???? = ???? × ????j
S:尾数 r:基数 j:阶码
123450000000 = 1.2345 × 1011
1.2345:尾数 10:基数 11:阶码
11.0101 = 0.110101 × 210
11.0101 = 0.0110101 × 211
(2)浮点数的表示范围
假设阶码数值取m位,尾数数值取n位
???? = ???? × ????????
阶码能够表示的最大值: ???????? − ???? −(???????? − ????) ???????? − ????
阶码表示范围: [−(???????? − ????),???????? − ????]
尾数能够表示的最大值: ???? − ????-n
尾数能够表示的最小值: ????−????
尾数表示范围: [????−????,???? 1− ????−????]
阶码表示范围: [−(???????? − ????),???????? − ????]
单精度浮点数
使用4字节、32位来表达浮点数(float)
双精度浮点数
使用8字节、64位来表达浮点数(double)
(3)浮点数的规格化
尾数规定使用纯小数
尾数最高位必须是1
正确:
11.0101 = 0.110101 × 210 √
错误:
11.0101 = 0.0110101 × 211 ×
11.0101 = 0.00110101 × 2^100 ^ ×
11.0101 = 1.10101 × 21 ×
例子1:
设浮点数字长为16位,阶码为5位,尾数为11位,将十进制数 13 /128表示为二进制浮点数。
原码 =反码=补码:???? = 0.0001101000
浮点数规格化:???? = 0.1101000 ∗ 2−11
尾数符为 0 尾数为 1101000000
阶符为1 阶码为0011
三、定点数与浮点数的对比
◆ 当定点数与浮点数位数相同时,浮点数表示的范围更大
◆ 当浮点数尾数为规格化数时,浮点数的精度更高
◆ 浮点数运算包含阶码和尾数,浮点数的运算更为复杂
浮点数在数的表示范围、精度、溢出处理、编程等方面均优于定点数
浮点数在数的运算规则、运算速度、硬件成本方面不如定点数