移位運算子: >> 和 <<
expression << expression
expression >> expression
備註
位元移位運算子如下所示:
向右移位 (>>)
左的移位 (<<)
移位運算子的兩個運算元必須是整數類資料型別。 根據所述規則來執行整數提升,是整數提升。 結果型別是升級的左運算元的型別相同。 向右移位運算式 x 的值 >> y 是 x / 2y,並向左移位運算式 x 的值 << y is x * 2y.
如果移位運算式的右邊運算元為負數或是大於或等於 (升級) 的左運算元的位元數,而右運算元是,結果是未定義。 Shift 鍵會不執行任何作業如果右邊的運算元都是零 (0)。
左移運算子會導致要向左位移的第二個運算元所指定的位元數的第一個運算元的位元模式。 移位空移位運算的位元將由零填滿。 這是邏輯的 shift 鍵,而非 shift 鍵並旋轉的作業。
向右移位運算子會導致要向右位移的第二個運算元所指定的位元數的第一個運算元的位元模式。 移位空移位運算的位元將由零填滿為不帶正負號的數量。 帶正負號的數量,為正負號位元會傳至空白位元位置。 Shift 鍵即為邏輯移位,如果左的運算元是帶正負號的數量。 否則,它即為算術移位。
Microsoft 專有的
負的數量帶正負號右移的結果取決於實作。 雖然MicrosoftC++會被傳遞的最大顯著性的位元,以填滿空出的位元位置,但是並不保證其他實作也會進行操作。
範例
// expre_Shift_Operators.cpp
// compile with: /EHsc
// Demonstrate shift operators
#include <iostream>
using namespace std;
int main() {
cout << "5 times 2 is " << (5 << 1) << endl
<< "20 divided by 4 is " << (20 >> 2) << endl;
}
Output