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

思路:

1.兩個數異或:相當於每一位相加,而不考慮進位;
2.兩個數相與,並左移一位:相當於求得進位;
3.將上述兩步的結果相加;

參考代碼:

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);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章