LeetCode 劍指 Offer 65. 不用加減乘除做加法
原題連結
思路:不讓使用一般加減運算子號當然是想到位運算。
- int 型別數在計算機中是使用補碼存放,負數正數的加減規則一樣,在計算的時候把有符號數看做無符號數計算,不然會報負值左移錯誤。
- 兩個二進位制數異或運算得到每一位進位以後剩下的,例如:二進位制1與1異或,結果是二進位制10,剩下的0。這一步結果是 ax。
- 兩個二進位制數與運算得到結果,表示這一位是否產生進位,如果產生進位,進位對應的是更高一位,對齊的操作是讓二進位制數左移一位。這一步結果是 bx。
- 然後再把 ax 和 bx 相加,重複操作2、操作3。
- 結束的標誌是不在有任何進位產生,即bx的值為0
給出程式碼:
class Solution {
public:
int add(int a, int b) {
while( b != 0){
int ax = a^b;
int bx = unsigned (a & b) << 1;
a = ax;
b = bx;
}
return a;
}
};
相關文章
- 【劍指offer】65. 不用加減乘除做加法
- 79 不用加減乘除做加法
- 每日一練(34):不用加減乘除做加法
- [每日一題] 第六題:不用加減乘除做加法每日一題
- Leetcode劍指offer(八)LeetCode
- LeetCode|劍指 Offer 49.醜數LeetCode
- shell加減乘除運算
- LeetCode 劍指 Offer 05. 替換空格LeetCode
- 《劍指offer》JAVA題解,LeetCode評測JavaLeetCode
- LeetCode-劍指Offer刷題記錄LeetCode
- 劍指OFFER
- Verilog實現加減乘除運算
- MongoDB 中的【加減乘除】運算MongoDB
- JS加減乘除位移方法封裝JS封裝
- 簡單的加減乘除(遞迴)遞迴
- 位運算實現加減乘除
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- JS 加減乘除 尤其是減法精度問題JS
- 【leetcode】劍指 Offer 16. 數值的整數次方LeetCode
- leetcode *劍指 Offer 47. 禮物的最大價值LeetCode
- 劍指offer導航
- 劍指 offer21
- 劍指offer16
- 劍指 offer20
- 超大整數的加減乘除計算方法
- 高精度四件套(加減乘除)
- 劍指offer-JavaScript版JavaScript
- 【劍指Offer】矩形覆蓋
- 劍指Offer題解合集
- 劍指offer——跳臺階
- 六、劍指 Offer(25~29)
- JavaScript浮點數加減乘除精確計算JavaScript
- 7-2 算術入門之加減乘除
- 二進位制運算加減乘除+快速冪
- 浮點數的加減乘除運算細節
- 三個數字的加減乘除模運算
- 刷題記錄:劍指offer+遇到的筆試題+LeetCode筆試LeetCode
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列