位运算

2018-10-20  本文已影响0人  ahuustcly

1.不用加减乘除做加法

解法:分为三步①各位相加不进位,即先按位异或;②做进位,按位与并左移位;③结果相加,直至没有进位

int add(int num1, int num2)
{
    int sum, carry;
    do
    {
        sum = num1 ^ num2;//先按位异或
        carry = (num1 & num2) << 1;//按位与并左移位

        num1 = sum;
        num2 = carry;
    }while(num2 != 0);//结果相加,直至没有进位

    return num1;
}

2.不使用新变量,交换变量的值

解法一:

a = a ^ b;
b = a ^ b;
a = a ^ b;

解法二:

a = a + b;
b = a - b;
a = a - b;

持续更新中。。。

上一篇 下一篇

猜你喜欢

热点阅读