1.题目
LeetCode:476. 数字的补数
【easy】
2.解题
方法一:掩码异或
由题可知补数是原数二进制的取反,所以比如5的二进制是0101,与0111进行异或操作结果是0010.因此我们求得掩码即可
java:
class Solution {
public int findComplement(int num) {
int mask = 1;
mask <<= 30;
while ((num & mask) == 0) mask >>= 1;
mask = (mask << 1) - 1;
return num ^ mask;
}
}