class Solution {
public:
int findComplement(int num) {
int temp, i=1, j;
temp = num;
while (temp != 0){
temp /= 2;
i *= 2;
}
j = i - 1 - num;
return j;
}
};
temp/2相当左移,用i来记录左移多少次,乘以多少个2,再减一相当于111….11这样的形式,而取反则是每一位用1减,刚好用111…1111 减去 num 为取反的值。