对整数的二进制取反后,再转换成十进制表示,可以得到这个整数的补数。
示例 1:
输入:num = 5
输出:2
解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。
示例 2:
输入:num = 1
输出:0
解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。
正常进行十进制转换为二进制的循环,在每一次循环中就该位置的二进制取反并还原为十进制。
int findComplement(int num){
int i=0;
int result=0;
int temp1=0;临时储存变量
long temp2=1;作用是把二进制转化为十进制
while (num)
{
temp1=num%2;
num/=2;
if (temp1==1)
{
temp1=0;取反
}
else
{
temp1=1;
}
temp1=temp1*temp2;
result+=temp1;
temp2=temp2*2;
i++;
}
return result;
}