java基础:位移运算符

说说这俩个:

<< 左移

>> 右移

1.x << y 意思是x向左移动了y个.一般结果是x乘以2的y次方.

如: 5 << 3  = 40 

0000 0101 = 5
0010 1000 = 32 + 8 = 40 = 5 * 2^3

 

2. x >>y意思是x向右移动了y个.一般结果是x除以2的y次方.

如 12 >>2 = 3

0000 1100 = 12
0000 0011 = 3 = 12/(2^2)

但是 位移超出边界 会怎么样呢?

如:5<<5 按理说等于5*2^5 = 160但是已经超出了byte的范围了.

0000 0101
1010 0000

这个结果看出已经是负数-96了.

但实际上不是这样.因为位移运算符默认的是用int来位移的.

byte 5 首先变成了int 5

0000 0000 | 0000 0000 | 0000 0000 | 0000 0101
0000 0000 | 0000 0000 | 0000 0000 | 1010 0000 = int 160

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值