剑指 Offer 65. 不用加减乘除做加法

剑指 Offer 65. 不用加减乘除做加法

计组没学好😂,属实是不太会做,因为加法有个定理
\(sum = a + b = increase + keep\),其中increase表示带有进位的结果,keep代表没有进位的结果,故而我们可以发现,\(a + b\)就等于\(a + b\)中不带进位的那一位\(keep\)左移一位加上进位

class Solution {
    public int add(int a, int b) {
        while(b != 0) {
            int carry = a & b;
            a = a ^ b;
            b = carry << 1;
        }
        return a;
    }
}
posted @ 2022-02-05 01:05  NullPointer_C  阅读(26)  评论(0)    收藏  举报