题意:求任意数字num的二进制各位取反的数值
思路:计算num的位数,找对应位数的各位均为1的值,然后求异或,即可取反
class Solution {
public:
int findComplement(int num) {
int temp=num,mask=1;
while(temp)
{
temp=temp>>1;
mask=mask<<1;//让和temp同长度的都置1,
}
return (mask-1)^num;//111和任何数求异或都取反
}
};
本文介绍了一种求任意数字二进制表示下各位取反的算法实现。通过计算数字的位数找到对应的全1值,并利用异或操作实现取反效果。提供了完整的C++代码示例。
364

被折叠的 条评论
为什么被折叠?



