<<

[Bitenkénti operátorok]

Leírás

A balra eltolási operátor << a bal oldali operandus bitjeit balra tolja el a jobb oldali operandus által meghatározott számú pozícióval.

Szintaxis

változó << bitek_száma;

Paraméterek

változó: Engedélyezett adattípusok: byte, int, long.
bitek_száma: a szám < = 32. Engedélyezett adattípusok: int.

Példa

int a = 5;      // binárisan: 0000000000000101
int b = a << 3; // binárisan: 0000000000101000, vagy 40 in decimálisan

Megjegyzések és figyelmeztetések

Ha egy x értéket y bittel eltol (x << y), akkor az x bal szélső, y db bitje elveszik, szó szerint kitolódik a létezésből:

int x = 5;  // binárisan: 0000000000000101
int y = 14;
int result = x << y;  // binárisan: 0100000000000000 - az első 1-es a 101-ből elveszik

Ha biztos abban, hogy az értékek egyike sem tolódik feledésbe, akkor a balra eltolás operátort egyszerűen úgy gondolhatja, hogy a bal oldali operandust megszorozza 2-vel a jobb operandus hatványára emelve. Például 2 hatványainak generálásához a következő kifejezések használhatók:

    Művelet Eredmény
    ------- --------
    1 <<  0      1
    1 <<  1      2
    1 <<  2      4
    1 <<  3      8
    ...
    1 <<  8    256
    1 <<  9    512
    1 << 10   1024
    ...

A következő példa használható egy fogadott bájt értékének kinyomtatására a soros monitorra, a bal shift operátor használatával a bájton alulról (LSB) felfelé (MSB) történő mozgáshoz, és kinyomtathatja a bináris értékét:

// Kiírja a bájt bináris értékét (1 vagy 0).
void printOut1(int c) {
  for (int bits = 7; bits > -1; bits--) {
    // Hasonlítsa össze a 7-0 biteket a bájtban
    if (c & (1 << bits)) {
      Serial.print("1");
    }
    else {
      Serial.print("0");
    }
  }
}

Lásd még