提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、代码
- 二、思路
一、代码:
int bitwiseComplement(int n){
if(n==0)//当输入为0,输出结果如果按照下面代码输出就为0,但是结果应该是1
return 1;//所以,这里要加一个if
int searchmask;//寻找掩码
int temp=n,ans,i=0;
while(temp)
{
i++;
temp >>= 1;
}
searchmask = pow(2,i) - 1;//寻找掩码(方法不唯一)
ans = searchmask ^ n;
return ans;
}
二、思路
这里我利用掩码的做法。首先要找出和 n 有关的掩码,将 n 与掩码进行异或就可以得到了结果。
例如 5 = ( 101 ), 我们要找的就是 7 = ( 111 ) (因为题目提示,n为一个非负整数)。因此:
5 ^ 7 = ( 101 ) ^ (111) = (010) = 2
就是想要的结果了。