当前位置:网站首页>不用加减乘除实现加法

不用加减乘除实现加法

2022-07-01 03:13:00 热心市民薛先生

在这里插入图片描述
此处采用位运算,a+b无进位的结果和a^b相等,0 + 1 = 1 == 0 ^ 1 = 1
a+b的进位等于 (a&b) << 1 3+1的进位为 (11 & 1) << 1 = 10

public int add(int a, int b) {
    
        //进位为0时跳出
        while(b != 0){
    
            //进位
            int c = (a & b) << 1;
            //无进位和
            a = a^b;
            //进位
            b = c;
        }
        return a;
    }

运算3+1:

  1. 1 != 0 进入循环 进位c = (11 & 1) << 1 = 10
    a = 11 ^ 1 = 10
    b = 10

  2. 第二次循环 10 != 0
    c = (10 & 10) << 1 = 100
    a = 10 ^ 10 = 0
    b = 100

  3. 第三次循环 100 ! = 0
    c = ( 0 & 100) << 1 = 0
    a = a ^ 100 = 100
    b = 0;

  4. 结束 结果为 4

原网站

版权声明
本文为[热心市民薛先生]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44311466/article/details/125510686