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.
这个题目的解法还是很清楚的
一、整数不变,mask右移
使用一个mast不断与这个数字进行与操作,得到相应的bit是否是零
int mask = 1;
int num;
int count = 0;
for shift=0:31
mask = mask << shift
int bit = num & mask;
if bit!=0
count++;
end
end
二、mask不变,整数右移法。
这里只适合整数非负的情况,负数右移,符号位会被不断复制,最后变为全一。
时间: 2024-10-06 07:16:19