计算byte表示的二进制数据中,1出现的次数

无意中看到这个题目,开始想到的是把byte的二进制数据转为一个数组,然后再遍历数组,计算数组中1出现的次数。

感觉这应该是这简单,效率也比较低的做法。

在编程之美上看到如下做法:

把byte数据取2的模,如果余数为1则说明当前位置出现的是1,否则是0,然后不断把byte往右边移位,也就是除以2,

代码如下:


public static int countByte(byte b)
{
int count = 0;
while (b > 0)
{
if (b % 2 == 1)
{
++count;
}
b = (byte)(b / 2);
}
return count;
}


感觉这是一个很不错的思路,记录下。

你可能感兴趣的:(java)