Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
The given integer is guaranteed to fit within the range of a 32-bit signed integer.
You could assume no leading zero bit in the integer’s binary representation.
Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.
~num取反 但是把所有leading 0都跟着取反了。例如5: 101, ～5 不是010， 是1111..010。
所以制作一个mask，111， 使~num & mask即可。
(Integer.highestOneBit(num) << 1) – 1
例如5，Integer.highestOneBit(num) = 0b100, 右移一位变成 1000，再减1变成111