先来看一下左移、右移
左移
右移
题目解答
1是一个特殊的数,二进制是000000000000000000000001(32位机器)
假如要判断的数是0(二进制里面没有1)
000000000000000000000000
&
000000000000000000000001
结果为0;
假如要判断的数是1
000000000000000000000001
&
000000000000000000000001
结果不为0;
假如要判断的数是2
000000000000000000000010
&
000000000000000000000010
结果不为0;
也就是说n的某个数如果&1不为0,说明这个位为1;
那么要&的这个数可以由1左移得到,1<<i位的结果和n 相&,要是结果不为0,就代表那个位是1;
//写一个函数,返回参数的二进制中1的个数
int func(int n)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
if ((n & (1 << i)) != 0)
count++;
}
return count;
}