Number of 1 Bits

来源:互联网 发布:专业的剪辑软件 编辑:程序博客网 时间:2024/05/21 10:07

题目:

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.

自己能想到下面前两种解法,第三种讨论区看到的:

//基本解法,没什么好说的int hammingWeight(uint32_t n) {    int sum = 0;    while(n) {        if(n % 2) {            sum++;        }        n /= 2;    }    return sum;}
//边向右移位边和1按位与int hammingWeight(uint32_t n) {    int sum = 0;    while(n) {        if(n & 1) {            sum++;        }        n = n >> 1;    }    return sum;}

//讨论区看到的,自己确实想不到int hammingWeight(uint32_t n) {    int sum = 0;    while(n) {        n &= n - 1;//每次可以消掉一个1        sum++;    }    return sum;}




0 0
原创粉丝点击