【Java】 劍指offer(65) 不用加減乘除做加法


 

本文參考自《劍指offer》一書,代碼采用Java語言。

更多:《劍指Offer》Java實現合集  

題目

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

思路

  對數字做運算,除了四則運算外,只剩下位運算了。根據一般情況下的加法步驟,設計如下:

  1)不考慮進位對每一位相加:1加0,0加1都等於1,而0加0,1加1等於0,所以使用異或^操作;

  2)計算進位:只有1加1產生進位,所以采用位與&操作,再左移1位;

  3)將和與進位相加,即重復前兩步操作。結束判斷為進位為0。

 測試代碼

  1.正負零

Java代碼

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

public class AddTwoNumbers {
    public int add(int num1,int num2) {
        while(num2!=0){
            int sum=num1^num2;  //沒進位的和
            int carry=(num1&num2)<<1;  //進位
            num1=sum;
            num2=carry;
        }
        return num1;
    }
}

  

收獲

  1.熟悉位操作的特性。二進制位運算的幾個用法

  2.記住如何用位操作來進行數字的加減。

 

更多:《劍指Offer》Java實現合集  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM