47. 不用加減乘除做加法 《劍指Offer》(Java版)

題目描述

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

 

/**
 * 寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。
 */
public class _047_Add {
    public static void main(String[] args) {
        Add(5,7);
    }
     /**
     * 刪掉註釋後運行,即可看過中間效果
     */
    public static int Add(int num1, int num2) {
//        System.out.println("num1: " + Integer.toBinaryString(num1) + ",num2: " + Integer.toBinaryString(num2));
        while (num2 != 0) {
            // 把不同的值保存到temp
            int temp = num1 ^ num2;
            // 相同的值保留並向前進一位,相同則進一位. 1,1-->10,
            num2 = (num1 & num2) << 1;
            // num1獲取到 他們之間不同的值
            num1 = temp;
//            System.out.println("num1:" + Integer.toBinaryString(num1) + ",num2: " + Integer.toBinaryString(num2));
        }
        return num1;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章