1.题目

给你一个 整数 num ,输出它的补数。补数是对该数的二进制表示取反。

示例:

  1. 输入:num = 5
  2. 输出:2
  3. 解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2
  4. 输入:num = 1
  5. 输出:0
  6. 解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0

提示:

2.思路

根据题意,补数是对该数的二进制取反

最容易理解的就是先转换为二进制,然后循环、各位取反

  1. public int findComplement(int num) {
  2. String complementStr = null;
  3. String binaryStr = Integer.toBinaryString(num);
  4. for (int i = 0; i < binaryStr.length(); i++) {
  5. complementStr += binaryStr.charAt(i) ^ '1';//异或(^):不同为1,相同为0
  6. }
  7. return Integer.parseInt(complementStr,2);
  8. }