1. 程式人生 > >【LeetCode】476. 數字的補數

【LeetCode】476. 數字的補數

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

注意:

給定的整數保證在32位帶符號整數的範圍內。 你可以假定二進位制數不包含前導零位。

示例 1:

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

示例 2:

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

class Solution {
public:
    int findComplement(int num) {
        int n=1;
        while(n < num){
            n=n*2+1;
        }
        return (n-num);
    }
};