给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。
注意:
输入:
5
输出:
2
解释:
5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。
输入:
1
输出:
0
解释:
1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。
class Solution {
public:
int findComplement(int num) {
int multi = 1;
int res = 0;
while(num != 0){
if((num&1) == 0){
res += multi;
}
num >>= 1;
multi <<= 1;
}
return res;
}
};
leetcode 476. 数字的补数(Number Complement)
原文:https://www.cnblogs.com/zhanzq/p/10593579.html