判断正整数N是否为2的乘方(如16是2的4次方)?
N & N-1 = 0
求正整数N转换成二进制后数字“1”的个数。
int ChargeOnesCountInNum3(int N)
{
int count=0;
while(N)
{
++count;
N = N & (N-1);
}
return count;
}
求两个正整数M和N对应的二进制中有多少个不同的位?
参考思路:先对m和n进行异或,然后计算异或后的二进制结果中1的个数。