实现一个函数,输入一个整数,输出该数的二进制表示中1的个数。
例如:9的二进制表示为1001,有两位是1
- 把1001减1,低位1变为0,则为1000,两数相与
- 把1000减1,低位1变为0,低位后的0变为1,则为0111,两数相与
- 终止条件为0
该例相与了两次,表示有两位1
代码如下
public class Test1 {
public static void main(String[] args) {
int N=9;
int count=0;
while(N!=0) {
N=(N&(N-1));
count++;
}
System.out.println(count);
}
}
网友评论