java基础:位移运算符

版权声明:本文为博主原创文章,未经博主允许不得转载。你想转载请附加连接哦 https://blog.csdn.net/dmw412724/article/details/83060778

说说这俩个:

<< 左移

>> 右移

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

猜你喜欢

转载自blog.csdn.net/dmw412724/article/details/83060778