位运算

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));
    }

}

 

posted @ 2019-07-29 12:39  Jocelyn-D  阅读(107)  评论(0编辑  收藏  举报