解説
左シフト演算子 << は、左側オペランドのビットを右側オペランドで指定された数だけ左にシフトさせます。
構文
variable << number_of_bits;
変数を指定します。許可されるデータ型:byte、int、long。
number_of_bits: < = 32である数値。許容されるデータ型:int。
プログラム例
int a = 5; // binary: 0000000000000101 int b = a << 3; // binary: 0000000000101000, or 40 in decimal
注意と警告
値xをyビットだけシフト(x << y)すると、xの左端のyビットが失われます。
int x = 5; // バイナリ: 0000000000000101
int y = 14;
int result = x << y; // binary: 0100000000000000 – 101の最初の1が捨てられた
左シフト演算子は、左オペランドに2を掛けて右オペランドの累乗にする、と考えるとわかりやすいでしょう。例えば、2の累乗を生成するには、次のような式を用いることができます。
Operation Result --------- ------ 1 << 0 1 1 << 1 2 1 << 2 4 1 << 3 8 ... 1 << 8 256 1 << 9 512 1 << 10 1024 ...
以下の例では、受信したバイトの値をシリアルモニタに出力しています。左シフト演算子を使ってバイトを下(LSB)から上(MSB)に移動し、そのBinary値を出力しています。
// Prints out Binary value (1 or 0) of byte void printOut1(int c) { for (int bits = 7; bits > -1; bits--) { // Compare bits 7-0 in byte if (c & (1 << bits)) { Serial.print("1"); } else { Serial.print("0"); } } }