求一个32位整数中1个个数

public static int getOneCount(int num) {
		/**
		 * 思路为:每次向右移动一位,而后与1相与,
		 * */
		int oneCount = 0;
		do {
			if((num & 1) != 0){
				++oneCount;
			}
		} while ((num >>>= 1) != 0);
		/**必须用num>>>=1(无符号右移),而不能用num>>=1(有符号右移), 
		 * 由于当参数为负数时,有符号右移老是在高位插入1,致使死循环 **/
		
		return oneCount;
	}
相关文章
相关标签/搜索