标题: | |
通过率: | 40.0% |
难度: | 简单 |
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the ).
For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011
, so the function should return 3.
Credits:
Special thanks to for adding this problem and creating all test cases.
本题就是数给的十进制数的二进制数有几个1。
最基本的做法就是32位扫描一遍进行查,我查看网页后找到一种简单的方法,减1法,每次把二进制减一,一直减到0为止,
n=n&(n-1);
具体代码如下:
1 public class Solution { 2 // you need to treat n as an unsigned value 3 public int hammingWeight(int n) { 4 int res=0; 5 while(n!=0){ 6 n=n&(n-1); 7 res++; 8 } 9 return res;10 }11 }