位运算乘除法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算乘除法相关的知识,希望对你有一定的参考价值。

1、无符号除法
    I.定点除法:对于n位dividend和divisor
      1)扩充为2n-1位,但是扩充方向不一致,被除数是:000...&dividend;而除数是: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]即为所求

以上是关于位运算乘除法的主要内容,如果未能解决你的问题,请参考以下文章

请问怎样用加法-移位实现定点乘除法?

初级--05--- 取模运算转化为位运算位运算进行加减乘除

[算法]位运算问题之三(实现加减乘除)

加减乘除求余 利用 位运算实现(详细)

(计算机组成原理)第二章数据的表示和运算-第二节6:定点数除法运算(原码/补码一位除法)

Java 位运算符