第6章 计算机的运算方法
6.1 无符号数和有符号数
一、无符号数
寄存器的位数反映无符号数的表示范围
二、有符号数
1. 机器数与真值
真值:带符号的数(就是平时书写的数字)
机器数:符号数字化的数(就是原码)
小数点的位置是约定的如果是小数定点机那么小数点位置在符号位之后**,如果是整数定点机那么小数点在最后一位
2. 原码表示法
原码就是机器码
整数:
小数:
原码的特点:
简单、直观
[+0]原 ≠ [-0]原
3. 补码表示法
能否 只作加法 ?
找到一个与负数等价的正数 来代替这个负数就可使 减 ——>加
一个负数加上 “模” 即得该负数的补数
一个正数和一个负数互为补数时它们绝对值之和即为 模数
整数:
小数:
求补码的快捷方式:
正数的补码就是其本身,负数的补码为其反码+1
4. 反码表示法
反码就是原码每位取反
5. 移码表示法
补码表示很难直接判断其真值大小,因为补码负数符号位为1,正数为0,这样负数就比正数大了
所以将真值整体加上一个常数,使得变大,使得所有数均为正数,这样就可以方便比较了
移码只有整数没有小数
用移码表示浮点数的阶码能方便地判断浮点数的阶码大小
6.2 数的定点表示和浮点表示
一、定点表示
分为小数定点机和整数定点机
小数点的位置是约定的如果是小数定点机那么小数点位置在符号位之后,如果是整数定点机那么小数点在最后一位
二、浮点表示
N = S×r^j 浮点数的一般形式
S 尾数 j 阶码 r 尾数的基值
S 小数、可正可负
j 整数、可正可负
1. 浮点数的表示形式
Sf
代表浮点数的符号
n
其位数反映浮点数的精度
m
其位数反映浮点数的表示范围
jf
和 m
共同表示小数点的实际位置
2. 浮点数的表示范围
上溢 阶码 > 最大阶码
下溢 阶码 < 最小阶码 按 机器零 处理
3. 浮点数的规格化形式
4.浮点数的规格化
基数 r 越大,可表示的浮点数的范围越大
基数 r 越大,浮点数的精度降低
三、IEEE 754 标准
6.3 定点运算
一、移位运算
目的:在计算机中,移位与加减配合,能够实现乘除运算
移位指数据相对小数点移动
码制 | 添补代码 | |
---|---|---|
正数 | 原码、补码、反码 | 0 |
负数 | 原码 | 0 |
负数 | 反码 | 1 |
负数 | 补码 | 左移添0 右移添1 |
算术移位:有符号数的移位
逻辑移位:无符号数的移位
二、加减法运算
1. 补码加减运算公式
连同符号位一起相加,符号位产生的进位自然丢掉
整数 [A]补 + [B]补 = [A+B]补(mod 2n+1)
小数 [A]补 + [B]补 = [A+B]补(mod 2)
整数 [A – B]补 = [A+(–B )]补 = [A]补 + [ – B]补 (mod 2n+1)
小数 [A – B]补 = [A+(–B )]补 = [A]补 + [ – B]补 (mod 2)
2. 溢出判断
(1) 一位符号位判溢出
最高有效位的进位异或
符号位的进位 = 1
(2) 两位符号位判溢出
结果的双符号位 相同 未溢出
结果的双符号位 不同 溢出
最高符号位 代表其 真正的符号
3. 补码加减法的硬件配置
A、X 均 n+1 位
用减法标记 GS 控制求补逻辑
三、乘法运算
乘法 运算可用 加和移位实现
由乘数的末位决定被乘数是否与原部分积相加,然后 1 位形成新的部分积,同时 乘数 1 位(末位移丢),空出高位存放部分积的低位。
被乘数只与部分积的高位相加
硬件:3 个寄存器,其中2个具有移位功能1 个全加器
特点:
- 绝对值运算
- 逻辑移位
- 用移位的次数判断乘法是否结束
原码一位乘的硬件配置
A、X、Q 均 n+1 位
移位和加受末位乘数控制
四、除法运算
小数定点除法 x* < y*
整数定点除法 x* > y*
被除数不等于 0
除数不能为 0
恢复余数法
余数 Ri>0 上商 “1”,2Ri – y*
余数 Ri<0 上商 “0”, Ri + y* 恢复余数
不恢复余数法(加减交替法)
上商“1” 2Ri – y*
上商“0” 2Ri + y*
特点:
- 上商 n+1 次
- 第一次上商判溢出
- 移 n 次,加 n+1 次
- 用移位的次数判断除法是否结束
原码加减交替除法硬件配置
A、X、Q 均 n +1 位
用 Qn 控制加减交替
6.4 浮点四则运算
一、浮点加减运算
x = Sx · 2j^x
y = Sy · 2j^y
1. 对阶
(1) 求阶差
(2) 对阶原则
小阶向大阶看齐
2. 尾数求和
尾数通过定点数加法求和
3. 规格化
原码: 不论正数、负数,第一数位为1
补码: 符号位和第 一数位不同
左规
尾数左移一位,阶码减 1,直到数符和第一数位不同为止
右规
当 尾数溢出( >1)时,需 右规
尾数右移一位,阶码加 1
4. 舍入
(1) 0 舍 1 入法
(2) 恒置 “1” 法