Java 这个的输出是20,但如何呢?

Java 这个的输出是20,但如何呢?,java,Java,输出是20,但我不明白背后的逻辑。请任何人解释 public static void main(String[] args) { System.out.println(5<<2); } publicstaticvoidmain(字符串[]args) { System.out.println(5如果您阅读了以下内容: 一元逐位补码运算符“~”反转位模式;它可以应用于任何整数类型,使每个“0”为“1”,每个“1”为“0”。例如,一个字节包含8位;将

输出是20,但我不明白背后的逻辑。请任何人解释

    public static void main(String[] args)
    {
    System.out.println(5<<2);   
    }
publicstaticvoidmain(字符串[]args)
{
System.out.println(5如果您阅读了以下内容:

一元逐位补码运算符“~”反转位模式;它可以应用于任何整数类型,使每个“0”为“1”,每个“1”为“0”。例如,一个字节包含8位;将此运算符应用于位模式为“00000000”的值会将其模式更改为“11111111”

有符号左移位运算符“”将位模式向右移位。位模式由左手操作数给出,并且由右手操作数给出要移位的位置数。无符号右移位运算符“>>>”将零移位到最左边的位置,而“>>”之后的最左边位置取决于符号扩展

按位&运算符执行按位AND操作

按位^运算符执行按位异或运算

按位|运算符执行按位包含或运算

以下程序BitDemo使用按位AND运算符将数字“2”打印到标准输出

class BitDemo {
    public static void main(String[] args) {
        int bitmask = 0x000F;
        int val = 0x2222;
        // prints "2"
        System.out.println(val & bitmask);
    }
}

x如果没有溢出,每个左移位就像乘以2。所以左移位乘以2就像*2*2或*4