1.兩個數異或:至關於每一位相加,而不考慮進位;
2.兩個數相與,並左移一位:至關於求得進位;
3.將上述兩步的結果相加;ide
public static int Add(int num1,int num2) { while (num2!=0) { int temp = num1^num2;//異或至關於加,但不考慮進位 num2 = (num1&num2)<<1;//按位與再左移一位用來計算進位 num1 = temp; } return num1; } //遞歸版本 public static int Add2(int num1,int num2) { if(num2==0){ return num1; }else{ return Add(num1^num2,(num1&num2)<<1); } }