Java芜湖~
逻辑右移 >>>
:舍弃最低位,高位用 0 填补
算术右移 >>
:舍弃最低位,高位用符号位填补;
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int ad=0;
while(n!=0){
ad+= n & 1;
n>>>=1;
}
return ad;
}
}
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int ad=0;
for(int i=0;i<32;i++){
if((n & (1<<i))!=0){
ad++;
}
}
return ad;
}
}
python3:
右移32位
class Solution:
def hammingWeight(self, n: int) -> int:
res = 0
while n:
res += n & 1
n >>=1
return res
消除二进制末尾的1:
class Solution:
def hammingWeight(self, n: int) -> int:
res = 0
while n:
res += 1
n &= n-1
return res