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.
Analysis:
This is a very basic bit manipulation problem.In order to count the number of 1 in the bit string, we can use a mask to check if the last bit is 1 or 0.
Cut the last bit (shift 1 bit right) and iterate this operation can achieve the final task.
mask = 1, binary of which is 0000...000001 (length meets with uint32)
shift operation: >>1.
Note that << shifts left and adds 0s at the right end
>> shifts right and adds 0s at the left (when data is unsigned int)
Code(C++):
class Solution {
public:
int hammingWeight(uint32_t n) {
int res=0;
while (n){
if (n&1){
res++;
}
n = n>>1;
}
return res;
}
};
Code(Python):
class Solution:
# @param n, an integer
# @return an integer
def hammingWeight(self, n):
res = 0
while n:
if n&1:
res += 1
n = n >> 1
return res
No comments:
Post a Comment