为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只萌萌小番薯 2019-10-15 14:48:17
我试图了解轮班经营者,但收获不多。当我尝试执行以下代码时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


查看完整回答
反对 回复 2019-10-15
?
ITMISS

TA贡献1871条经验 获得超8个赞

来自二进制的十进制编号系统2如下


10

现在,如果你这样做


2 << 11

它将是,右侧将填充11个零


1000000000000

有符号的左移位运算符“ <<”将位模式向左移位,而有符号的右移位运算符“ >>”将位模式向右移位。位模式由左操作数给出,移位位置的数量由右操作数给出。无符号右移运算符“ >>>”将零移位到最左位置,而“ >>”之后的最左位置取决于符号扩展名[..]


左移会导致项或算术乘以2(* 2)


例如


2在二进制中10,如果您这样做<<1将100是4


4在二进制中100,如果您这样做  <<1将1000是8


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 330 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信