【leetcode刷题笔记】Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).

For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should return 3.

题解:利用位运算的知识,n&(n-1)的结果会出去n的最后一位1.比如n=11=1011,n-1=10=1010,那么n&(n-1)=1010,最后一位1就没有了。设置一个循环,每次赋值n=n&(n-1)。n为0的时候统计循环的次数就知道n的二进制里面有多少个1了。

Java代码:

 1 public class Solution {
 2     // you need to treat n as an unsigned value
 3     public int hammingWeight(int n) {
 4         int sum = 0;
 5         while(n != 0){
 6             sum ++;
 7             n = n&(n-1);
 8         }
 9         return sum;
10     }
11 }

 

posted @ 2015-03-30 11:06  SunshineAtNoon  阅读(165)  评论(0编辑  收藏  举报