1.异或运算
对二进制取反,就是二进制中0变成1,1变成0,可以利用异或运算
如数字5,二进制为1 0 1
1 0 1
1 1 1
--------------
0 1 0 为取反的结果
代码如下:
class Solution {
public:
int findComplement(int num) {
//只是对数字取反,利用异或运算,如5 二进制 1 0 1 与1 1 1异或得到其反数
int temp=num,count=0;
//统计num的位数
while(temp!=0)
{
temp=temp>>1;
count=(count<<1)+1;
}
return num^count;
}
};