LeetCode 476 數字的補數
阿新 • • 發佈:2021-10-18
對整數的二進位制表示取反(0
變 1
,1
變 0
)後,再轉換為十進位制表示,可以得到這個整數的補數。
- 例如,整數
5
的二進位制表示是"101"
,取反後得到"010"
,再轉回十進位制表示得到補數2
。
給你一個整數 num
,輸出它的補數。
示例 1:
輸入:num = 5 輸出:2 解釋:5 的二進位制表示為 101(沒有前導零位),其補數為 010。所以你需要輸出 2 。
示例 2:
輸入:num = 1 輸出:0 解釋:1 的二進位制表示為 1(沒有前導零位),其補數為 0。所以你需要輸出 0 。
位運算
public static int findComplement(int num) { //與num二進位制位數相同且全為1的變數temp,將temp與num進行異或即為所求 int temp = 0; // 0初始和1初始的效率不同 while (temp < num) { temp <<= 1; temp += 1; } return temp ^ num; }
測試用例
public static void main(String[] args) { int num = 5; int ans = FindComplement.findComplement(num); System.out.println("FindComplement demo01 result : " + ans); num = 1; ans = FindComplement.findComplement(num); System.out.println("FindComplement demo02 result : " + ans); }
測試結果
FindComplement demo01 result : 2
FindComplement demo02 result : 0