移位运算符如何在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    

有人可以解释一下吗?


一只萌萌小番薯
浏览 332回答 3
3回答

RISEBY

System.out.println(Integer.toBinaryString(2 << 11));&nbsp;将二进制2(10)向左移动11次。因此:1000000000000System.out.println(Integer.toBinaryString(2 << 22));&nbsp;将二进制2(10)向左移动22次。因此:100000000000000000000000System.out.println(Integer.toBinaryString(2 << 33));&nbsp;现在,int为4字节,因此为32位。因此,当您偏移33时,它等效于偏移1。因此:100

ITMISS

来自二进制的十进制编号系统2如下10现在,如果你这样做2 << 11它将是,右侧将填充11个零1000000000000有符号的左移位运算符“ <<”将位模式向左移位,而有符号的右移位运算符“ >>”将位模式向右移位。位模式由左操作数给出,移位位置的数量由右操作数给出。无符号右移运算符“ >>>”将零移位到最左位置,而“ >>”之后的最左位置取决于符号扩展名[..]左移会导致项或算术乘以2(* 2)例如2在二进制中10,如果您这样做<<1将100是44在二进制中100,如果您这样做&nbsp; <<1将1000是8
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java