說說這倆個:
<< 左移
>> 右移
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