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; } }