首页 > 技术文章 > 191.Number of 1Bits---位运算---《剑指offer》10

cing 2017-12-14 16:15 原文

题目链接:https://leetcode.com/problems/number-of-1-bits/description/

题目大意:与338题类似,求解某个无符号32位整数的二进制表示的1的个数。注意要求是无符号32位整数。

注意:无符号整数的范围是0~2^32-1,而普通int的范围是-2^31 ~ 2^31-1。

法一:直接用普通十进制转二进制的办法做,发现超时了,超时数据是2^31,当我把这个数放进eclipse中发现直接报错,至于为什么在leetcode里还可以编译通过,我也不知道。想看它的测试代码,发现并没有公开。代码如下:

1     public int hammingWeight(int n) {
2         int cnt = 0;
3         while(n != 0) {
4             cnt += n & 1;
5             n >>= 1;
6         }
7         return cnt;
8     }
View Code

生气!这段代码用C++提交,AC了!耗时3ms,生气!

推荐阅读