本题的意思是给定一个数,输出它的补码数,也就是原来的数的二进制的补码所表示的数。
本题解法:例如数字5,使用 5 ^ 7 得到结果2,获取7的方法, num ^ mask = result ,对num右移一位循环,直到num >= 1,在循环中进行计算mask <<= 1; mask ^= 1,外层对mask减一得到mask ,最终得到result。
class Solution {
public:
int findComplement(int num) {
int temp = num, mask = 1;
while(temp > 1) {
temp >>= 1;
mask <<= 1;
mask ^= 1;
}
return (num ^ mask);
}
};