【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 }

 

你可能感兴趣的:(LeetCode)