1. 题目
给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。
2. 解题
- 先求出该数的2进制有多少位
- 然后分别每位与1进行异或操作
class Solution {
public:
int findComplement(int num) {
int n = 1, num_copy = num;
while(num_copy/2)
{
n;
num_copy /= 2;
}
while(n)
{
num ^= (1<<n-1);
n--;
}
return num;
}
};