> >

[Bitwise Operators]

説明

右シフト演算子 >> は、左オペランドのビットを右オペランドで指定された位置の数だけ にシフトします。

構文

variable >> number_of_bits;

媒介変数

variable: 許可されるデータ型: byteintlong.
number_of_bits: 32 以下の数値。許可されるデータ型: int.

x を y ビット右にシフト (x >> y) し、x の最上位ビットが 1 の場合、動作は x の正確なデータ型によって異なります。x が int 型の場合、最上位ビットは符号ビットであり、前述のように x が負かどうかを決定します。その場合、符号ビットは下位ビットにコピーされますが、これは歴史的な理由により、以下のようになります。

int x = -16;  // binary: 1111111111110000
int y = 3;
int result = x >> y;  // binary: 1111111111111110

この動作は符号拡張と呼ばれ、多くの場合、望ましい動作ではありません。代わりに、左からゼロをシフトインしたい場合もあるでしょう。unsigned int 式では右シフトの規則が異なるため、型キャストを使用することで、左からゼロがコピーされるのを抑制することができます。

int x = -16;  // binary: 1111111111110000
int y = 3;
int result = (unsigned int)x >> y;  // binary: 0001111111111110

符号拡張を避けるように注意すれば、右シフト演算子 >> を使用して 2 の累乗で割ることができます。次に例を示します。

int x = 1000;
int y = x >> 3; // integer division of 1000 by 8, causing y = 125.

参照

  • [Example] BitMath Tutorial

Language Reference Home

86Duinoリファレンスのテキストは、Arduinoリファレンスを改変したもので、Creative Commons Attribution-ShareAlike 3.0ライセンスに基づいてライセンスされています。リファレンス内のコードサンプルはパブリックドメインとして公開されています。

上部へスクロール