476. Number Complement

1 class Solution 
2 {
3 public:
4     int findComplement(int num) 
5     {
6         return ~num&((1<<(int)log2(num))-1);
7     }
8 };

这个方法很骚,取非之后把前置0的部分全部用&操作置为0.

(1<<(int)log2(num))-1 这个操作可以获得低于num最高位的所有位为1的数字,比如,0000 1010进行此操作后,可以得到0000 0111

猜你喜欢

转载自www.cnblogs.com/zhuangbijingdeboke/p/9118223.html