首页 > 代码库 > 位运算乘除法
位运算乘除法
1、无符号除法
I.定点除法:对于n位dividend和divisor
1)扩充为2n-1位,但是扩充方向不一致,被除数是:000...÷nd;而除数是:divisor&000...
2)如果dividend>=divisor,则dividend-=divisor;quotient置‘1’,然后divisor向右移动1位;否则,quotient置‘0’,divisor向右移动一位
3)重复2)共计n次,则所得的quotient依次为高位---低位,最终的dividend即为remainder
2、有符号除法
首先判断符号位,然后转换为无符号数,按照上述无符号除法I进行计算
3、无符号和无符号乘法
I.booth乘法:对于n位的multiplicand和multiplier
1)首先扩充p数组为2n+1位(称为p空间),最后一位为虚位(被记为p[-1],在数组中下标-1是不合法的,只是为了说明这是辅助位),扩充方式为:p[2n-1..0]&p[-1]=000...&multipilier&0;
2)如果p[0..-1]为“00”或者“11”,则不进行算术运算,仅仅将p向右移动一位;
如果p[0..-1]为“01”,则p[2n-1..n]+=multiplicand,然后p向右移动一位;
如果p[0..-1]为“10”,则p[2n-1..n]-=multiplicand,然后p向右移动一位。
3)重复2)共计n次(此处重复次数忘了,应该是上下浮动一次,可以实验一下)
4)最终p[2n-1..0]即为所求
位运算乘除法