1. 题目
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如把 9 表示成二进制是 1001,有 2 位是 1。因此如果输入 9,该函数输出 2。
2. 思路
注意到,如果要判断一个二进制数指定位数是否为 1,比如这个二进制数是 1011。那么只需要构造除了这个位为 1,其他位为 0 的二进制即可,这个例子是 0100。
两者进行&
运算,如果结果为 0,那么指定位数不为 1;否则为 1。
现在事情就简单了,只要准备数字1
,每次与原数进行&
操作,然后左移1
;
重复前面的步骤,就能逐步比较出每一位是不是1
。
3. 代码实现
1 | /** |
注意:有更好的实现思路,请见“02-二进制中 1 的个数进阶版”。