位运算
1.移位操作实现乘法运算
public class Muti {
//把一个数向左移动n位相当于把该数乘以2的n次方
public static int powerN(int m,int n){//m乘以2的n次方
for(int i=0;i<n;i++){
m=m<<1;
}
return m;
}
public static void main(String[] args){
System.out.println("3*8="+powerN(3,3));
System.out.println("3*16="+powerN(3,4));
}
}
2.判断一个数是否为2的n次方
方法一:
public class isPower {
public static boolean ispower(int n){
if(n<1) return false;
int i=1;
while(i<=n){
if(i==n)
return true;
i<<=1;
}
return false;
}
public static void main(String[] args){
System.out.println(ispower(8));
System.out.println(ispower(9));
}
}
方法二:
public class isPower {
public static boolean ispower(int n){
if(n<1) return false;
int m = n&(n-1);
return m==0;
}
public static void main(String[] args){
System.out.println(ispower(8));
System.out.println(ispower(9));
}
}
3.求二进制数中1的个数
public class countOne {
public static int countone(int n){
int count = 0;
while(n>0){
if((n&1)==1)
count++;
n>>=1;
}
return count;
}
public static void main(String[] args){
System.out.println(countone(853));
System.out.println(countone(64));
}
}