移位運算子就是在二進位的基礎上對數字進行平移。依照平移的方向和填滿數字的規則分為三種:>(帶符號右移)和>>>(無符號右移)。
在移位運算時,byte、short和char型別移位後的結果會變成int型,對於byte、short、char和int進行移位時,規定實際移動的次數是移動次數和32的餘數,也就是移位33次和移位1次得到的結果相同。移動long型的數值時,規定實際移動的次數是移動次數和64的餘數,也就是移動66次和移動2次得到的結果相同。
386 以後的硬體將移位對字長進行取模,右移32位元就是右移了0位元(CPU 把右移的位數 32 對於字長 32 進行取模運算,右移 32 位仍然是 9。你可以換一下for迴圈的條件,像是換成i
三種移位運算子的移動規則和使用如下所示:
語法格式:
需要移位的數字 例如: 3 在數字沒有溢出的前提下乘以正數和負數的1次方,左移n位就相當於乘以2的n次方。
>>運算規則:以二進位形式把所有的數字向右移動對應巍峨位數,低位移出(捨棄),高位的空位補符號位,即正數補零,負數補1.
語法格式: 🟎 移位的數字 >> 移位的次數
例如11 >> 2,則是將數字11右移2位
計算過程:11的二進位形式為:0000 0000 0000010兩個數字移出,因為數字是正數,所以在高位補零。則得到的最終結果是0000 0000 0000 0000 0000 0000 0000 0010.轉換為十進位為3.
>>>運算規則:以二元形式把所有的數字向右移動對應巍峨位數,低位移出(捨棄),高位的空位補零。對於正數來說和帶符號右移相同,對於負數來說不同。
其他結構和>>相似。