1.简述:
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回二进制表达式中的数字位数 '1' 个数(又称汉明重量)。
提示:
请注意,在某些语言(如 Java)中间没有无符号整数类型。在这种情况下,输入和输出将被指定为有符号的整数类型,不应影响您的实现,因为无论整数是有符号的还是没有符号的,其内部的二进制表示相同的形式。
在 Java 在中间,编译器使用二进制补码记法来表示符号整数。因此,在示例中 3.输入表示符号整数 -3。
示例 1:
输入:n = 00000000000000000000000000001011
输出:3
说明:输入二进制串 在万万万万万万万万万万万万万万万万万万万万万万万万一百一十一中,共有三位 '1'。
示例 2:
输入:n = 00000000000000000000000010000000
输出:1
说明:输入二进制串 在000000000000000000000000000000中,有一个是 '1'。
示例 3:
输入:n = 11111111111111111111111111111101
输出:31
说明:输入二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
2.实现代码:
public class Solution { public int hammingWeight(int n) { int ret = 0; for (int i = 0; i < 32; i++) { if ((n & (1 << i)) != 0) { ret++; } } return ret; }}