<<

名称

«

説明

ビット単位の左シフト演算子(«)は、左辺のオペランドを、右辺のオペランドで指定した数だけ、左シフトさせる。

書式

variable << number_of_bits;

引数

varable整数(利用できるデータ型:byte, int, long)。
number_of_bits32以下の整数(利用できるデータ型:int)。

使用例

1
2
int a = 5;      // binary: 0000000000000101
int b = a << 3; // binary: 0000000000101000, or 40 in decimal

注意

xをyビット左にシフトすると(x « y)、元のxの左側のyビットはなくなる。

1
2
3
int x = 5;  // binary: 0000000000000101
int y = 14;
int result = x << y;  // binary: 0100000000000000 - the first 1 in 101 was discarded

シフトしてもどのビットも失われないといことが確実な場合、ビット単位の左シフト演算子は、左オペランドを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に向けて値を調べている。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 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");
    }
  }
}

参照

利用例 Bitmath Tutorial

オリジナルのページ

https://www.arduino.cc/reference/en/language/structure/bitwise-operators/bitshiftleft/

Last Revision: 2019/02/19

最終更新日

January 4, 2024

inserted by FC2 system