一尘不染

移位运算符如何在Java中工作?

java

我正在尝试了解轮班经营者,但收获不多。当我尝试执行以下代码时

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    

有人可以解释一下吗?


阅读 287

收藏
2020-03-18

共1个答案

一尘不染

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

2020-03-18