1. 判断一个数为2的倍数
a%2 == 0;//#1
或
a & 0×0001 == 0;//#2
#1是判断a除以2后的余数是否为0,为0则说明是2的倍数;
#2是用a和0x0001(十六进制表示,对应二进制为0000 0000 0000 0001)相与,按位进行与运算,当两个二进制位都为1时,结果为1;否则为0。对于0×0001来说,只有最低位为1,其他位都是0,如果a & 0×0001 == 0;则说明a的最低位为0,是个偶数,是2的倍数。
2. 求一个数里有几个1
思路:逐位除以10取余进行判断
int fun(long x)
{
int _count = 0;
while(x)
{
if(x % 10 == 1)
++ _count;
x /=10;//实则就是x = x/10;
}
return _count;
}
int main()
{
cout<<fun(123231)<<endl;
return 0;
}
while(x)的循环条件是,当x等于0时就跳出循环,返回计数值。