统计一个8bit中1的个数
写了那么多天java语言的知识,基本已经算是比较全面了。今天翻了手边的几本java语言类书,没有找到可以写的东西。所以今天就抓了一本编程之美来研究一哈。
对于这个问题我一开始的想法就是做一个遍历。把byte类型toString()然后比较字符就好了。后来一想这是基本类型,并不继承于object。
第一种方法
package test;
public class Main {
static byte b =9;
public static void main(String[] args) {
System.out.println(count(b));
}
private static int count(byte b) {
int sum = 0;
while (b != 0) {
if (b % 2 == 1) {
System.out.print(1);
sum++;
} else
System.out.print(0);
b /= 2;
}
System.out.println();
return sum;
}
}
顺便学习了一下如何把一个数变成二进制。或者是n进制。
看到了上面这个算法的乘除运算,而且运算数是2的倍数,那么很自然就想到位运算了,这是计算机最擅长的运算方式。