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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章