Skip to content

Операции сдвига

Операции сдвига позволяют сдвигать биты числа влево или вправо. Эти операции используются для быстрого умножения и деления на степени двойки, а также для работы с битовыми масками.

  • Операции сдвига выполняются над целочисленными типами: Signed, Unsigned.
  • Правый операнд (количество сдвигаемых битов) должен иметь тип byte, а результат сдвига имеет тот же тип, что и левый операнд.
Операция Описание
<< Сдвиг влево. Освободившиеся биты справа заполняются нулями.
>> Сдвиг вправо. Для беззнаковых типов освобожденные биты слева заполняются нулями.
Для знаковых типов (например, int, short) заполняется битом знака.

Примеры

Сдвиг влево

void loop()
{
  short x = 5;      // 00000101
  byte shift = 2;
  short y = x << shift;  // 00010100 (20)
}

Сдвиг вправо (беззнаковый)

void loop()
{
  ushort x = 32;   // 00100000
  byte shift = 2;
  ushort y = x >> shift;  // 00001000 (8)
}

Сдвиг вправо (знаковый)

void loop()
{
  short x = -32;   // 11100000 (в двоичном представлении)
  byte shift = 2;
  short y = x >> shift;  // 11111000 (-8, так как знак сохраняется)
}