问题描述
输入1个整数,求其二进制表示中有多少个“1”。
解决思路
1. 不断右移,碰到1与0与,计数;(对于负数不可,会死循环);
2. 与(n-1)与,相当于清除最右端的“1”,计数。
程序
思路2:
public class NumOfOne { public int getNumOfOne(int num) { int count = 0; while (num != 0) { num = num & (num - 1); ++count; } return count; } }