判断一个二进制数有几个1
方法1 :
int main()
{
int n;
int cnt = 0;
scanf("%d",&n);
while(n)
{
if(n & 1) cnt++;
n >>= 1;
}
cout<<cnt<<endl;
return 0;
}
方法2 :
原理 : 一个数减去1,则这个数二进制最后一位1及其以后的0取反,&之后会少一个1
int main()
{
int n;
int cnt = 0;
scanf("%d",&n);
while(n)
{
n &= (n - 1);
cnt ++;
}
cout<<cnt<<endl;
return 0;
}
判断是否存在相邻1
x&(x<<1)//相邻一位
x&(x<<2)//相邻两位