首先我们把数字转换对应的二进制的同时直接反码,因为我们最终需要的是把补码转换对应的十进制;
class Solution {
public int findComplement(int num) {
if(num==1)
return 0;
if(num==0)
return 1;
String s = "";
while(num>0){
int res = num%2;
if(res==1)
s+= "0";
else
s+= "1";
num/=2;
}
String n = "";
for(int i = s.length()-1;i>=0;i--){
n+=s.charAt(i);
}
int res = convertToDecimal(n);
return res;
}
public int convertToDecimal(String n){
int sum = 0;
int pow = n.length();
for(int i = 0;i<n.length();i++){
if(n.charAt(i)=='0')
sum+=0*Math.pow(2,--pow);
else
sum+=1*Math.pow(2,--pow);
}
return sum;
}
}