输出是 20,但我不明白这背后的逻辑。请任何人解释
public static void main(String[] args)
{
System.out.println(5<<2);
}
如果您阅读有关按位和位移运算符的信息:-
一元按位补码运算符“~”反转位模式;它可以应用于任何整数类型,使每个“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);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句