以下罗列了书上的3种解法,第4,5种方法是用空间换时间的方法,如果查找次数很频繁,建议采用空间换时间的方法。
public class count1 {
/**
* @param args
*/
public static int count0(byte s) {
int num=0;
while(s!=0){
if(s%2==1)
num++;
s=(byte)(s/2);// s/2计算时s会自动转换为整型,但是大类型不能自动转换为小类型
}
return num;
}
public static int count2(int s) {
int num=0;
while(s!=0){
//int v=s&0x01;
if((s&0x01)==1)//s&0x01==1编译错误
num++;
s>>=1;
}
return num;
}
public static int count3(byte s) {
int num=0;
while(s!=0){
s&=(s-1);
num++;
}
return num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
byte s=110;
System.out.println(count0(s));
System.out.println(count2(s));
System.out.println(count3(s));
}
}