LeetCode 位運算 兩整數之和

2022-08-20 08:42:10 字數 687 閱讀 6336

不使用運算子 + 和 - ​​​​​​​,計算兩整數 ​​​​​​​a 、b ​​​​​​​之和。

示例:

輸入: a = 1, b = 2

輸出: 3

輸入: a = -2, b = 3

輸出: 1

在做 10 進製加法時,例如15 + 6,我們先將低位相加得到結果的低位 1 和進製 1,將進製 1 和高位 1 相加就得到了結果的高位 2,最終的結果為 21。所以求加法的過程中,我們要得到當前位的結果和進製。

推廣到二進位制,有

0 & 0 = 0, 0 ^ 0 = 0;

0 & 1 = 0, 0 ^ 1 = 1;

1 & 0 = 0, 1 ^ 0 = 1;

1 & 1 = 1, 1 ^ 1 = 0;

我們發現兩個二進位制位做異或就是相加得到的當前位的結果,做與操作就是進製。

所以,我們將 a, b 進行異或操作得到當前位的結果,進行與操作得到進製,如果進製為0,則退出迴圈,否則將當前步的結果賦值給 a,將進製左移一位的結果賦值為 b。**如下:

class solution 

return ans; // 返回 ans

}};

注意,進製的型別要是無符號整數。

LeetCode之位運算

public intadd int a,int b return a 劍指offer 64 求1 2 n 難度 中等 求 1 2 n 要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 題解 用遞迴的方法的 public intsumnu...

位運算實現兩個整數的加法運算

最近在看一本 程式設計師面試寶典 在程式設計基本概念這一章中多次出現了按位與,異或等二進位制的計算,下面這道題就是其中之一 先放 include int add const int a,const int b if b 0 return a 設定遞迴退出條件 else int sum,carry s...

每日LeetCode之兩整數相除

解決方案一 採用二分法,能夠較快的解決不採用除法,乘法以及mod方法來計算兩個整數的除法的問題。public int divide int dividend,int divisor 判斷結束後全部當做正數進行操作 使用long解決數值溢位情況 long ldividend math.abs long...