1、乘法运算
有的机器由硬件乘法器直接完成乘法运算,有的硬件根据乘法运算的方法用软件编程实现;
当计算机没有乘(除)运算线路时,可以采用累加和右移相结合,实现乘(除)运算;
-
笔算乘法
-
原码乘法
-
原码一位乘运算
运算方法:符号位与数值位分开运算,符号位求异或,数值位相乘;
数值位相乘:在累加寄存器和乘商寄存器这两个寄存器的基础上进行运算;
数值位相乘的流程:
n次累加,n次移位
-
原码两位乘法
-
-
补码乘法
符号位参与运算,
-
补码一位乘法(Booth算法)
一种有符号数的乘法,采用相加或相减操作计算补码数据的乘积;
n+1次累加,n次移位;
-
2、除法运算
-
原码除法运算
商的符号位和数值部分分开处理;
-
原码恢复余数法:
A(被除数和余数寄存器)B(除数寄存器),C(乘商寄存器)三个寄存器
-
原码不恢复余数法(原码加减交替法):
商放在乘商寄存器,余数放在被除数寄存器;
规则:
-
符号位和数值位分开运算;
-
第一步先用被除数减去除数;
接下来,
当余数为正时,商上1,余数和商左移一位,再减去除数;
当余数为负时,商上0,余数和商左移一位,再加上除数;
一共n+1次加减,n次左移;
-
当第n+1步的余数为负时,余数需要加上除数得到第n+1步正确的余数;(即余数和被除数同号)
-
-
-
补码除法运算(补码加减交替法)
商放在乘商寄存器,余数放在被除数寄存器;
规则:
-
符号位参与运算;
-
第一步,
若被除数与除数同号,则被除数减去除数;
若被除数与除数异号,则被除数加上除数;
接下来,
若余数与除数同号,则商1,余数左移一位减去除数;
若余数与除数异号,则商0,余数左移一位加上除数;
一共n+1次加减,n次左移;
-
结果末尾恒置1;
-