LeetCode

来源:互联网 发布:linux下vnc客户端 编辑:程序博客网 时间:2024/06/07 05:52

题目

  求一个数的二进制每一位取反后的数。

思路

  运用异或的特性,101 ^ 111 = 010,任意数字和n个1的二进制异或,相当于每一位取反。

代码

public int findComplement(int num) {    int res = num;    int tmp = 1;    // 每循环一次,tmp乘2    while (num > 0) {        tmp <<= 1;        num >>= 1;    }    return res ^ (tmp - 1);}
原创粉丝点击