Leetcode 476 数字的补数 题目 给你一个 正 整数 num ,输出它的补数。补数是对该数的二进制表示取反。 解题思路 由于没有前导零,就是二进制取反操作,那么只需要知道它有多少位,用全是1的数求异或就行了。 代码 class Solution { public int findComplement(int num) { int ans = num, target = 0; while (num != 0) { num >>= 1; target = (target << 1) + 1; } ans = target ^ ans; return ans; } }