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 面試題47:不用加減乘除做加法面試題
- 不用加減乘除做加法(Java實現)Java
- [每日一題] 第六題:不用加減乘除做加法每日一題
- Leetcode劍指offer(八)LeetCode
- LeetCode|劍指 Offer 49.醜數LeetCode
- 《劍指offer》JAVA題解,LeetCode評測JavaLeetCode
- LeetCode-劍指Offer刷題記錄LeetCode
- LeetCode 劍指 Offer 05. 替換空格LeetCode
- MongoDB 中的【加減乘除】運算MongoDB
- JS加減乘除位移方法封裝JS封裝
- 位運算實現加減乘除
- 簡單的加減乘除(遞迴)遞迴
- 大資料的運算加減乘除大資料
- JS 加減乘除 尤其是減法精度問題JS
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- 劍指offer-JavaScript版JavaScript
- 【劍指offer】左旋轉字串字串
- 【劍指offer】字串的排列字串
- 劍指Offer題解合集
- 超大整數的加減乘除計算方法
- Verilog實現加減乘除運算
- leetcode *劍指 Offer 47. 禮物的最大價值LeetCode
- 【leetcode】劍指 Offer 16. 數值的整數次方LeetCode
- 劍指 offer(1) -- 陣列篇陣列
- 【劍指offer】【2】字串的空格字串
- 【劍指offer】字串轉整數字串
- 【劍指offer】字串的組合字串
- 劍指offer刷題記錄
- JavaScript浮點數加減乘除精確計算JavaScript
- 7-2 算術入門之加減乘除
- 三個數字的加減乘除模運算
- 浮點數的加減乘除運算細節
- 二進位制運算加減乘除+快速冪
- java的多項式的加減乘除和賦值Java賦值
- NumPy 簡單算術:加減乘除及其他運算
- 《劍指 Offer》棧實現佇列佇列
- 劍指offer解析-下(Java實現)Java
- 劍指offer解析-上(Java實現)Java