Введение

Алгоритмическое изменение данных на уровне ниже слова

Битовая манипуляция — это алгоритмическое изменение битов или других фрагментов данных, размер которых меньше машинного слова. Задачи компьютерного программирования, требующие битовой манипуляции, включают управление устройствами низкого уровня, алгоритмы обнаружения и исправления ошибок, сжатие данных, алгоритмы шифрования и оптимизацию. Для большинства других задач современные языки программирования позволяют программисту работать непосредственно с абстракциями, а не с битами, представляющими эти абстракции. Исходный код, выполняющий битовую манипуляцию, использует побитовые операции: И, ИЛИ, Исключающее ИЛИ, НЕ и, возможно, другие операции, аналогичные логическим операторам; также используются битовые сдвиги и операции для подсчета единиц и нулей, поиска старшего и младшего значащего бита, установки, сброса и проверки битов, извлечения и вставки полей, маскирования и обнуления полей, сбора и распределения битов в указанные позиции или поля. Операторы целочисленной арифметики также могут выполнять побитовые операции в сочетании с другими операторами. В некоторых случаях битовая манипуляция может устранить или уменьшить необходимость перебора структуры данных и обеспечить многократное увеличение скорости, поскольку побитовые операции обрабатываются параллельно.

Терминология

Манипуляции с битами, "подстройка" битов, "выбивание" битов и "битовая гимнастика" часто используются как синонимы битовых операций, но иногда обозначают именно хитрые или неочевидные способы и приемы битовых операций, либо утомительные и сложные задачи манипулирования данными на низком уровне при управлении устройствами. Термин "подстройка битов" возник в эпоху раннего вычислительного оборудования, когда операторы компьютеров вносили корректировки, регулируя или "подстраивая" элементы управления компьютера. С развитием языков программирования, программисты стали использовать этот термин для обозначения любых операций с данными, включающих вычисления на уровне отдельных битов.

Битовая операция

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

Маскировка

Маска – это данные, используемые для побитовых операций, особенно в битовом поле. С помощью маски можно в одном побитовом действии установить, сбросить или инвертировать несколько бит в байте, полубайте, слове (и т.д.). Более сложные применения маскирования, когда они применяются к операциям условно, называются предикацией.