我试图了解轮班经营者,但收获不多。当我尝试执行以下代码时System.out.println(Integer.toBinaryString(2 << 11));System.out.println(Integer.toBinaryString(2 << 22));System.out.println(Integer.toBinaryString(2 << 33));System.out.println(Integer.toBinaryString(2 << 44));System.out.println(Integer.toBinaryString(2 << 55));我得到以下1000000000000 100000000000000000000000 100 10000000000000 1000000000000000000000000 有人可以解释一下吗?
3 回答
RISEBY
TA贡献1856条经验 获得超5个赞
System.out.println(Integer.toBinaryString(2 << 11));
将二进制2(10)向左移动11次。因此:1000000000000
System.out.println(Integer.toBinaryString(2 << 22));
将二进制2(10)向左移动22次。因此:100000000000000000000000
System.out.println(Integer.toBinaryString(2 << 33));
现在,int为4字节,因此为32位。因此,当您偏移33时,它等效于偏移1。因此:100
ITMISS
TA贡献1871条经验 获得超8个赞
来自二进制的十进制编号系统2如下
10
现在,如果你这样做
2 << 11
它将是,右侧将填充11个零
1000000000000
有符号的左移位运算符“ <<”将位模式向左移位,而有符号的右移位运算符“ >>”将位模式向右移位。位模式由左操作数给出,移位位置的数量由右操作数给出。无符号右移运算符“ >>>”将零移位到最左位置,而“ >>”之后的最左位置取决于符号扩展名[..]
左移会导致项或算术乘以2(* 2)
例如
2在二进制中10,如果您这样做<<1将100是4
4在二进制中100,如果您这样做 <<1将1000是8
添加回答
举报
0/150
提交
取消