剑指offer15. 二进制中1的个数 P100
int countNumbersOfOne(int a
) {
int count
= 0;
unsigned int flag
= 1;
while (flag
) {
if ((a
& flag
)) ++count
;
flag
= flag
<< 1;
}
return count
;
}
int countNumbersOfOne2(int a
) {
int count
= 0;
while (a
) {
a
&= a
- 1;
++count
;
}
return count
;
}
扩展: 1 一条语句判断整数是不是2的整数次方 2 两个整数m,n 求m要改变多少二进制位才能变成n
1 (二进制中只有一个1) 2 (1)先异或^(2)统计结果中1的个数