计算机概论计算篇二
定点数与浮点数
定点数的表示方法
小数点固定在某个位置的数称之为定点数
浮点数的表示方法
- 计算机处理的很大程度上不是纯小数或纯整数
- 数据范围很大,定点数难以表达
浮点数的表示格式
浮点数的表示范围
- 单精度浮点数: 使用4字节、32位来表达浮点数(float)
- 双精度浮点数: 使用8字节、64位来表达浮点数(double)
浮点数的规格化
- 尾数规定使用纯小数
- 尾数最高位必须是1
定点数与浮点数的对比
- 当定点数与浮点数位数相同时,浮点数表示的范围更大
- 当浮点数尾数为规格化数时,浮点数的精度更高
- 浮点数运算包含阶码和尾数,浮点数的运算更为复杂
浮点数在数的表示范围、精度、溢出处理、编程等方面均优于定点数
浮点数在数的运算规则、运算速度、硬件成本方面不如定点数
定点数的加减法运算
数值位与符号位一同运算,并将符号位产生的进位自然丢掉
判断溢出
双符号位判断法
- 单符号位表示变成双符号位:0=>00,1=>11
- 双符号位产生的进位丢弃
- 结果的双符号位不同则表示溢出
定点数的加减法运算总结
浮点数的加减法运算
对阶
对阶的目的是使得两个浮点数阶码一致,使得尾数可以进行运算
- 浮点数尾数运算简单
- 浮点数位数实际小数位与阶码有关
- 阶码按小阶看齐大阶的原则
]
尾数求和
- 使用补码进行运算
- 减法运算转化为加法运算:A - B = A + (-B)
尾数规格化
尾数规格化(右移)
- 一般情况下都是左移
- 双符号位不一致下需要右移(定点运算的溢出情况)
- 右移的话则需要进行舍入操作
溢出判断
- 定点运算双符号位不一致为溢出
- 浮点运算尾数双符号位不一致不算溢出
因为尾数双符号位可以进行右规
- 浮点运算主要通过阶码的双符号位判断是否溢出
如果规格化后,阶码双符号位不一致,则认为是溢出