寫一個方法,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。

思路:

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);
        }
    }
相關文章
相關標籤/搜索