Java中的2<<3是什么意思

Python013

Java中的2<<3是什么意思,第1张

这是一个位运算表达式啊<<表示算术左移,用来将一个数的二进制位序列左移若干位,高位左移后溢出,舍弃不用,在右补0。如2<<3,把十进制值2转成二进制数补码:00000010把2的二进制位向左移动3位,高位左移后溢出(以左为高),舍弃不用,在右边补0:把00000010向左移动三位,最左边三个0溢出——>00010,然后再右边补三个0——>00010000再将这个二进制码转成十进制数字就是16。还有两个相关的移位运算符:>>表示算术右移,用来将一个数的二进制位序列右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值。>>>表示逻辑右移,用来将一个数的二进制位添零右移若干位,即向右移动若干位,移到右端的低位被舍弃,最高位添零。它也叫无符号右移

输出的值是3

int是32位,现在为方便只写4为即可,因为数比较小。

2的二进制表示 0010,3的二进制0011,5的二进制0101.

&的优先级高于|的优先级。

1、&先计算

0011 &0101 两个操作数都为1才为1,结果0001。

2、|再计算

0001 | 0011 只要有一位为1即为1,结果0011。

所以最后结果为3。