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
posted on 2018-05-31 18:13  高数考了59  阅读(89)  评论(0)    收藏  举报