说说这俩个:
<< 左移
>> 右移
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