文章目录
#引言
关于x&(x-1),这个表达式看见过2次了,就拿过来写写。
#第一道题
public static int func(int x){
int count=0;
while(x){
count++;
x=x&(x-1);
}
return count;
}
public static void main(String args[]){
System.out.println(func(1234)+"");
}
这个方法是用来计算一个数转换成二进制之后,1的个数。比如这里1234=1024+128+64+16+8+4;
所以1024转换二进制就是:100 1101 1100,因此这里输出就是6。
#第二道题
public static int func(int x){
if((x&(x-1))==0){
return 0;
}else{
return 1;
}
}
public static void main(String args[]){
System.out.println(func(8)+"");
}
这个方法是用来判断一个数是否为2的n次方。可以举例去尝试,1,2,4,8,16,……均为0;3、5、6、7、……均为1。
#总结
书到用时方恨少。