本文共 693 字,大约阅读时间需要 2 分钟。
编写一个函数来计算无符号整数的二进制表达式中的‘1’的个数(汉明重量)
要实现一个Java函数,该函数接收一个整数,将其转换为二进制表示并统计其中‘1’的个数。这个问题可以通过两种方式解决:位移和取反运算符,或者使用循环和掩码。
选项1:位移和取反运算符这种方法针对正数和负数分别处理。对于正数,每次右移检查最后一位是否为1,并右移;对于负数,先将数转换为正数,然后重复同样的步骤,最后计算结果为32减去总数。
选项2:循环和掩码这种方法直接遍历32位,使用掩码检查每个位是否为1,不需要显式处理正负数。
public int hammingWeight(int n) { int x = n; int count = 0; int mask = 1; for (int i = 0; i < 32; i++) { if ((mask & x) != 0) { count++; } mask <<= 1; } return count;}
该方法适用于所有整数,无论是正数还是负数,均能正确统计其二进制表示中的‘1’的个数。
转载地址:http://qhgyk.baihongyu.com/