讲解
原码一位乘法
- 两个 n+1 位的数,第一位是符号
- 乘积的符号由两个数的符号位异或而成
- 乘数的最低位为 Yn ,若 Yn=1 ,则部分积加上被乘数 ∣x∣ ,然后逻辑右移;若 Yn=0 ,则部分积加上 0,然后逻辑右移
- 重复 n 次(机器字长 n+1)
补码一位乘法(Booth 算法)
- 符号位参与运算,因为是补码
- 被乘数取双符号位,乘数取单符号位
- 乘数末位增设附加位,初值为 0
- 根据最低位和次低位的取值来确定操作,其中右移为算数右移
- 重复 n+1 次(机器字长 n+1 )
次低位 | 最低位 | 操作 |
---|
0 | 0 | 部分积右移一位 |
0 | 1 | 部分积加 [x] 补,右移一位 |
1 | 0 | 部分积加 [−x] 补,右移一位 |
1 | 1 | 部分积右移一位 |
原码除法运算(不恢复余数法)
- 商的符号由两个数的符号位异或得到
- 先用被除数减去除数
- 当余数为正时,商上 1,余数和商左移一位,再减去除数
- 当余数为负时,商上 0,余数和商左移一位,再加上除数
- 当第 n+1 步(机器字长为 n+1)余数为负时,需加上 ∣y∣ 得到正确的余数(和被除数同号)
补码除法运算(加减交替法)
- 符号位参与运算,除数和被除数均用补码表示,商和余数也用补码表示,使用两位符号位
- 若被除数和余数
- 若余数与除数
- 同号,则商上 1,余数左移一位减去除数
- 异号,则商上 0,余数左移一位加上除数
- 重复 n+1 次(机器字长 n+1)
- 一般情况下,商的末位恒置 1