首页 > 解决方案 > Java:右移数字 1 不起作用

问题描述

我正在尝试将数字 1 向右移动。

所以最初,位掩码应该是:

1

那么,位掩码应该是:

01

下面是我的代码:

int bitmask = 1;
bitmask >>= 1;
System.out.println(Integer.toBinaryString(bitmask));

然而,输出只是:

0

标签: javabit-manipulation

解决方案


也许我们对位移的工作原理有误解。进行右移时,会丢失最低有效位 (1)。

二进制中的 1 已经是 0b01。这相当于 0b00000001。向右移动会产生 0b00。

试试这个,看看位移是否有效。

public class MyClass {
    public static void main(String args[]) {
        int bitmask = 0b10;
        System.out.println(Integer.toBinaryString(bitmask));
        bitmask >>= 1;
        System.out.println(Integer.toBinaryString(bitmask));
    }
}

输出

10
1

推荐阅读