位运算实现加减乘除

Posted randyniu

tags:

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

int Add(int a, int b)
{
    int sum = 0;
    while(b!=0)
    {
        sum = a^b;
        b = ((a&b)<<1);
        a = sum;
    }
    return sum;
}
int NegNum(int b) { return Add(~b, 1); }
int Minus(int a, int b) { return Add(a, NegNum(b)); }
bool isNeg(int a) { return a<0; }
int Multi(int a, int b) { int x = isNeg(a) ? NegNum(a) : a; int y = isNeg(b) ? NegNum(b) : b; int res = 0; while(y!=0) { if((y&1)!=0) res = Add(res, x); x <<= 1; y >>= 1; } return isNeg(a)==isNeg(b) ? res : NegNum(res); }
int Div(int a, int b) { int x = isNeg(a) ? NegNum(a) : a; int y = isNeg(b) ? NegNum(b) : b; int res = 0; for(int i=31; i>=0; i=Minus(i,1)) { if((x>>i) >= y) { res |= (1<<i); x = Minus(x, y<<i); } } return isNeg(a)==isNeg(b) ? res : NegNum(res); }

 






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

位运算-实现加减乘除

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

(转)使用位运算技巧实现加减乘除

(转)使用位运算技巧实现加减乘除

用位运算实现四则运算之加减乘除(用位运算求一个数的1/3) via Hackbuteer1

"Coding Interview Guide" -- 只用位运算不用算术运算实现整数的加减乘除运算