Побитовая операция


В компьютерном программировании побитовая операция работает с битовой строкой , битовым массивом или двоичным числом (рассматриваемым как битовая строка) на уровне отдельных битов . Это быстрое и простое действие, базовое для высокоуровневых арифметических операций и напрямую поддерживаемое процессором . Большинство побитовых операций представлены как инструкции с двумя операндами, в которых результат заменяет один из входных операндов.

На простых недорогих процессорах обычно побитовые операции выполняются значительно быстрее, чем деление, в несколько раз быстрее, чем умножение, а иногда значительно быстрее, чем сложение. В то время как современные процессоры обычно выполняют сложение и умножение так же быстро, как и побитовые операции, из-за их более длинных конвейеров команд и других архитектурных решений, побитовые операции обычно потребляют меньше энергии из-за меньшего использования ресурсов. [1]

В приведенных ниже пояснениях любое указание на положение бита отсчитывается с правой (наименее значащей) стороны, продвигаясь влево. Например, двоичное значение 0001 (десятичная 1) имеет нули во всех позициях, кроме первой (то есть самой правой).

Побитовое НЕ или дополнение — это унарная операция , которая выполняет логическое отрицание каждого бита, формируя дополнение до единиц данного двоичного значения. Биты, равные 0, становятся равными 1, а биты, равные 1, становятся равными 0. Например:

Побитовое дополнение равно двум дополнениям значения минус один. Если используется арифметика с дополнением до двух, то NOT x = -x − 1.

Для целых чисел без знака побитовое дополнение числа является «зеркальным отражением» числа посередине диапазона целого числа без знака. Например, для 8-битных целых чисел без знака NOT x = 255 - x, которые можно визуализировать на графике в виде нисходящей линии, которая эффективно «переворачивает» возрастающий диапазон от 0 до 255 в убывающий диапазон от 255 до 0. Простой, но наглядный пример использования заключается в инвертировании изображения в градациях серого, где каждый пиксель хранится как целое число без знака.


Побитовое И 4-битных целых чисел
Побитовое ИЛИ 4-битных целых чисел
Побитовое исключающее ИЛИ 4-битных целых чисел
Левый арифметический сдвиг
Правый арифметический сдвиг
Логический сдвиг влево
Правильный логический сдвиг
Левый круговой сдвиг или поворот
Круговой сдвиг вправо или поворот
Левый поворот через перенос
Правый поворот через перенос