逻辑左移、逻辑右移

代码:

    public static void main(String[] args) {
        int num = 53;
        int m = 1;
        // 测试向左移位
        System.out.println(String.format(" 数字 %d 的二进制向左移 %d 位是 %d", num, m, leftShift(num, m)));
        // 测试向右移位
        System.out.println(String.format(" 数字 %d 的二进制向右移 %d 位是 %d", num, m, rightShift(num, m)));   

        System.out.println();

        m = 3;
        // 测试向左移位
        System.out.println(String.format(" 数字 %d 的二进制向左移 %d 位是 %d", num, m, leftShift(num, m)));
        // 测试向右移位
        System.out.println(String.format(" 数字 %d 的二进制向右移 %d 位是 %d", num, m, rightShift(num, m)));   
    }

    /**
     * @Description: 向左移位
     * @param num- 等待移位的十进制数, m- 向左移的位数
     * @return int- 移位后的十进制数
     */
    public static int leftShift(int num, int m) {
        return num << m;
    }

    /**
     * @Description: 向右移位(逻辑右移:左边补 0 即可;算术右移:保持符号位不变,除符号位之外的右移一位并补符号位 1,补的 1 仍然在符号位之后。)
     * @param num- 等待移位的十进制数, m- 向右移的位数
     * @return int- 移位后的十进制数
     */
    public static int rightShift(int num, int m) {
        return num >>> m;
    }
逻辑左移、逻辑右移_第1张图片
逻辑右移

逻辑左移、逻辑右移_第2张图片
算术右移

输出:

数字 53 的二进制向左移 1 位是 106
数字 53 的二进制向右移 1 位是 26

数字 53 的二进制向左移 3 位是 424
数字 53 的二进制向右移 3 位是 6

参考资料:https://time.geekbang.org/column/article/71840

你可能感兴趣的:(逻辑左移、逻辑右移)