共用方式為


位元移位運算子

移位運算子移向左其第一個運算元 (<<) 或向右 (>>) 的第二個運算元所指定的位置數目。

語法

  • 移位運算式:
    加法運算式

    移位運算式<<加法運算式移位運算式>>加法運算式

這兩個運算元必須是整數值。 此類運算子執行一般的算數轉換 ; 結果的型別是在轉換後的左運算元的型別。

Leftward 的班次,空出正確的位元是設定成 0。 為 rightward 的班次,空出左邊的位元會填滿根據第一個運算元的型別轉換之後。 如果型別是unsigned,它們會設定為 0。 否則,也會填入正負號位元的複本。 左移運算子,而不需溢位,陳述式

expr1 << expr2 

相當於乘以 2expr2。 向右移位運算子

expr1 >> expr2 

相當於除以 2expr2 如果expr1是不帶正負號或為非負數的值。

如果第二個運算元為負數,或右運算元是大於或等於位元升級的左運算元的寬度,移位運算的結果未定義。

執行轉換,因此由轉換運算子不會提供溢位或反向溢位的情況下,資訊可能會遺失,如果在轉換後的第一個運算元的型別無法表示移位運算的結果。

unsigned int x, y, z;

x = 0x00AA;
y = 0x5500;

z = ( x << 8 ) + ( y >> 8 );

在這個範例中, x會移向左 8 個位置和y是向右 8 個的位置。 加入變動的值,讓 0xAA55,並指派給z。

移位至右邊的負數值時,會產生一半的原始值,向下捨入。 例如,–253 (二進位 11111111 00000011) 移出右邊的一個位元,便會產生 –127 (二進位 11111111 10000001)。 正 253 班次滑鼠右鍵,會產生 +126。

向右移位保留正負號位元。 當將向右移位帶正負號的整數時,最大顯著性的位元都會使用此設定。 當將向右移位不帶正負號的整數時,則會清除的最大顯著性的位元。

請參閱

參考

移位運算子: >> 和 <<