题意:提供一个无符号32位整型uint32_t变量,返回其二进制形式的1的个数。
思路:取出一位,就右移1位,挤掉它,循环32次,逐个判断。没难度就不解释了,可能有更好解法,等待第2次思考。
1 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 if(!n) return 0; 5 if(n==1) return 1; 6 7 uint32_t MASK = 1, temp=n; 8 int i, cnt = 0; 9 for(i=0; i<32; i++) 10 { 11 if( temp & MASK ) 12 cnt++; 13 temp = temp>>1; 14 } 15 return cnt; 16 } 17 };
LeetCode Number of 1 Bits 计算1的个数
原文:http://www.cnblogs.com/xcw0754/p/4412907.html