n=n&(n-1)可以快速统计二进制数1的个数(包括负数的二进制数):另外插一句,负整数的表示是原码取反再加1;
最高位始终是符号位,正数的最高位是符号位0, 负数的最高位是符号位1.
方法二:常规解法
这里 flag=1 (即0001) , flag<<1 变为(0010)也就是逐一从n的最低位开始进行对比看这一位上是不是1,进行计数。
n=n&(n-1)可以快速统计二进制数1的个数(包括负数的二进制数):另外插一句,负整数的表示是原码取反再加1;
最高位始终是符号位,正数的最高位是符号位0, 负数的最高位是符号位1.
方法二:常规解法
这里 flag=1 (即0001) , flag<<1 变为(0010)也就是逐一从n的最低位开始进行对比看这一位上是不是1,进行计数。