public class Solution {
    public int Add(int num1,int num2) {
        // 思路:位运算
        // 1、两个数异或,相当于每一位相加,而不考虑进位
        // 2、两个数相与,并左移一位:相当于求得进位
        // 3、将上述两步的结果相加。
        // 4、循环结束条件时,当进位为0的时候,证明它们相异或的就是要的结果
        // 难点在于,大多数人想到不到循环结束条件是什么
        // 参考评论区一位大佬的
        while(num2 != 0){
            int sum = num1 ^ num2;
            int carry = (num1 & num2) << 1;
            num1 = sum;
            num2 = carry;
        }
        return num1;
    }
}