程序员社区

位运算

用移位操作实现乘法运算

package bit_operation;

public class MultiPlication {
    //用移位操作实现乘法运算
    //m*2^n
    public static int power(int m,int n){
        for(int i = 0;i<n;i++){
            m = m<<1;
        }
        return m;
    }
    public static void main(String[] args) {
        System.out.println(power(3, 3));
    }
}

24

 

判断一个数是否为2的n次方

package bit_operation;

public class Two_N {
    //判断一个数是否为2的n次方
    //方法1
    public static boolean isPower(int n) {
        if(n<1)
            return false;

        int i = 1;
        while (i<=n) {
            if(i==n)
                return true;
            i = i<<1;
        }
        return false;
    }

    //方法2
    public static boolean isPowerpro(int n) {
        if(n<1){
            return false;
        }
        return (n&(n-1))==0;
    }
    public static void main(String[] args) {
        System.out.println(isPower(8));
        System.out.println(isPower(9));

        System.out.println(isPowerpro(8));
        System.out.println(isPowerpro(9));
    }
}

true
false
true
false

求二进制数中1的个数

package bit_operation;

public class Binary_1 {
    // 求二进制数中一的个数
    //方法一
    public static int countOne(int n) {
        int count = 0;
        while (n > 0) {
            if ((n & (1)) == 1) {
                count++;
            }
            n = n >> 1;
        }
        return count;
    }

    //方法二
    public static int countOnepor(int n) {
        int count = 0;
        while (n > 0) {
            if(n!=0){
                n = n&(n-1);
                count++;
            }
        }
        return count;
    }

    public static void main(String[] args) {
        System.out.println(countOne(7));
        System.out.println(countOne(8));

        System.out.println(countOnepor(7));
        System.out.println(countOnepor(8));
    }
}

3
1
3
1

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 位运算

一个分享Java & Python知识的社区