476數字的補數

2021-08-21 12:09:40 字數 806 閱讀 2700

題目點我

給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。

注意:給定的整數保證在32位帶符號整數的範圍內。

你可以假定二進位制數不包含前導零位。

示例 1:

輸入: 5

輸出: 2

解釋: 5的二進位制表示為101(沒有前導零位),其補數為010。所以你需要輸出2。

示例 2:

輸入: 1

輸出: 0

解釋: 1的二進位制表示為1(沒有前導零位),其補數為0。所以你需要輸出0。

按照十進位制數轉二進位制的方法來算

使用異或取反,1^1=00^1=1

class

solution

return ans;

}}

用位運算取二進位制的表示,<<相當於×2(有符號),>>>相當於/2(無符號)

class solution 

return ans;

}}

5的2進製表示為101,補數為010,加起來為111

所以只要找離目標數最近的111就行,然後用111減去5,得到其補數

integer.max_value = 2147483647 = math.pow(2, 31) - 1,防止溢位

class solution 

return n-num;

}}

476 數字的補數

題目 給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。注意 給定的整數保證在32位帶符號整數的範圍內。你可以假定二進位制數不包含前導零位 示例 1 輸入 5輸出 2解釋 5的二進位制表示為101 沒有前導零位 其補數為010。所以你需要輸出2。示例 2 輸入 1輸出 0解釋 1的二進位...

476 數字的補數

給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。注意 給定的整數保證在32位帶符號整數的範圍內。你可以假定二進位制數不包含前導零位。示例 1 輸入 5 輸出 2 解釋 5的二進位制表示為101 沒有前導零位 其補數為010。所以你需要輸出2。示例 2 輸入 1 輸出 0 解釋 1的二進...

476 數字的補數

leetcode上一道關於位運算的題目數字的補數,原題目如下 給定乙個正整數,輸出它的補數。補數是對該數的二進位制表示取反。注意 給定的整數保證在32位帶符號整數的範圍內。你可以假定二進位制數不包含前導零位。示例 1 輸入 5 輸出 2 解釋 5的二進位制表示為101 沒有前導零位 其補數為010。...