本文參考自《劍指offer》一書,代碼採用Java語言。html
更多:《劍指Offer》Java實現合集 java
寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、×、÷四則運算符號。函數
對數字作運算,除了四則運算外,只剩下位運算了。根據通常狀況下的加法步驟,設計以下:post
1)不考慮進位對每一位相加:1加0,0加1都等於1,而0加0,1加1等於0,因此使用異或^操做;測試
2)計算進位:只有1加1產生進位,因此採用位與&操做,再左移1位;url
3)將和與進位相加,即重複前兩步操做。結束判斷爲進位爲0。設計
測試代碼htm
1.正負零blog
//題目:寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、×、÷ //四則運算符號。 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.熟悉位操做的特性。二進制位運算的幾個用法get
2.記住如何用位操做來進行數字的加減。