题目来源:
leetcode题目,网址:1009. 十进制整数的反码 - 力扣(LeetCode)
解题思路:
二进制逐位取反求和即可 。
解题代码:
class Solution {
public int bitwiseComplement(int n) {
if(n==0){
return 1;
}
int res=0;
int base=1;
while(n!=0){
res+=base*(n&1^1);
n=n/2;
base=base*2;
}
return res;
}
}
总结:
官方题解是构造掩码再异或。首先获得 n 的二进制位数 x ,然后将 n 与 2^x-1 异或,结果即为所求。