计算byte表示的二进制数据中,1出现的次数
程序员文章站
2022-03-13 13:47:40
...
无意中看到这个题目,开始想到的是把byte的二进制数据转为一个数组,然后再遍历数组,计算数组中1出现的次数。
感觉这应该是这简单,效率也比较低的做法。
在编程之美上看到如下做法:
把byte数据取2的模,如果余数为1则说明当前位置出现的是1,否则是0,然后不断把byte往右边移位,也就是除以2,
代码如下:
感觉这是一个很不错的思路,记录下。
感觉这应该是这简单,效率也比较低的做法。
在编程之美上看到如下做法:
把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;
}
感觉这是一个很不错的思路,记录下。
上一篇: 阶乘计算升级版(12位以上的阶乘)
下一篇: C++选择排序实现