要求:5取反为010即2
思路:先循环找最高为1在哪,然后用全1去异或即可。此外,可以用不停减去最低位一的方法来得到最高位1
class Solution {
public:
int findComplement(int num) {
uint mask=1<<31;
while((mask&num)==0)
mask>>=1;
mask=(mask<<1)-1;
return mask^num;
}
};