Битовая маскировка (Bit masking) в C++

Как разобрать XML в C++ Программирование и разработка

Битовая маскировка — это процесс, который используется для доступа к определенному биту в байтах данных. Это явление используется, когда вы выполняете процесс итерации. Битовая маска называется маской последовательности из N бит, которая используется для кодирования части нашей коллекции. Эти элементы маски могут быть установлены или не могут быть установлены. Есть поразрядные операторы для создания или переключения битов. Эти операторы используются для включения бита выключения или наоборот.

Чтобы использовать программы C ++ для их выполнения в Linux, вам необходимо, чтобы файл Ubuntu был настроен и находился в рабочем состоянии. Более того, пользователь должен иметь некоторое знание языка C ++. Исходные коды C ++ написаны в текстовом редакторе. А для процесса выполнения используйте терминал Ubuntu.

Битовая маска также называется простой маской, которая представляет собой последовательность из n битов. Он кодирует подмножество коллекции. Элемент «I» присутствует в подмножестве «i-го» бита, установленного в маске. Для набора элементов, имеющих n-е байты, есть шансы иметь 2N маски, соответствующие подмножеству.

Почему используется битовая маска

Процесс битовой маски сохраняет разные значения в одном и том же наборе номеров. Например, рассмотрим набор, в котором s = {1, 2, 5, 8, 6 и 7}. Чтобы представить набор {2, 5, 7}, мы можем использовать любую битовую маску 010110.

Растровые изображения выполняют следующие операции:

Установите бит «i-й».
Это делается с учетом значения «x». Мы можем выполнить x | = x << i для установки бита. Мы бит за битом сдвигаем «a» влево, затем выполняем побитовую операцию.

Снятие «i-го» бита
Чтобы сбросить бит, должен быть бит, который уже установлен пользователем или установлен по умолчанию. Так что этот конкретный бит можно легко сбросить. Для этого мы используем операторы x & = ~ (x << i).

Немного переключить
Это процесс, в котором мы используем оператор x ^ = x << i.

Читайте также:  Умножение матриц NumPy: начните за 5 минут

Проще говоря, если вы хотите установить бит, это означает, что если i-й бит равен 0, то он будет установлен в 1. А если он уже равен 1, оставьте его без каких-либо изменений. Аналогично, в случае сброса бита, если i-й бит равен 1, тогда он должен быть очищен до 0. И если сейчас он уже равен 0, не меняйте его; оставьте все как есть. Где бы ни переключался бит, если i-й бит равен 1, теперь измените этот бит на 0. А если он уже равен 0, теперь вам нужно снова вернуться к 1.

Пример битовой маскировки

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

Теперь начнем с потока ввода и вывода, чтобы включить чтение и запись в файл.

#include <iostream>

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

Сначала мы перешли к основной программе исходного кода

Когда пользователь вводит число, оно подвергается множеству процессов, например, используется цикл while. Этот цикл обеспечивает доступность чисел каждый раз при выполнении программы. Когда число введено, система отображает 3 варианта для пользователя: если пользователь хочет установить битовую маску или если он хочет очистить битовую маску, а третий — переключить значение. И в конце пользователю предлагается выбрать любой из них. Чтобы перемещаться по всем этим операциям, нам нужна такая логика, которая будет выбирать только один вариант, который вводит пользователь. Пока все операции простаивают в это время.

Итак, мы используем здесь оператор switch. Когда пользователь вводит свой выбор, он сохраняется в переменной, а затем для этой переменной мы выполняем оператор switch. Каждая строка оператора switch содержит вызов функции каждой опции. Какой бы вариант ни выбрал пользователь, система выполнит эту конкретную программу для этой опции. Мы используем оператор break с каждой опцией оператора switch. Потому что, когда один из вариантов завершен, вам необходимо остановить дальнейшее выполнение программы автоматически, пока не будет предложено запустить программу.

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

X|<<;

Когда эта операция выполняется полностью, значение после прохождения

Когда эта операция выполняется полностью, значение после прохождения операций обрабатывается снова, а затем отображается значение.

Следующий вариант — сбросить уже созданную или новую маску. Это также очистит первое и следующее переднее значение бита.

X&=~(<<i);

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

X^=<<I;

После написания кода сохраните его в файле, а затем сохраните файл с расширен

После написания кода сохраните его в файле, а затем сохраните файл с расширением «.c». Для выполнения кода нам понадобится компилятор g ++, который скомпилирует код. ’немного. c ’- это имя файла.

$ g++ o bit bit.c
$./bit

После написания кода сохраните его в файле, а затем сохраните

Когда мы выполняем код, управление находится в основной программе, когда вы выбираете вариант функции, затем, в соответствии с функцией, выполняется конкретный вызов функции, и управление передается этой конкретной функции. Например, согласно изображению, мы сначала вводим число, а затем выбираем вариант.

Мы выберем все три варианта построчно. Во-первых, мы выбрали первую опцию для установки битовой маски. В соответствии с функцией бит до и после текущего бита отображается случайным образом, когда выполнение функции завершено.

Мы выберем все три варианта построчно

Снова отображаются параметры. Теперь мы хотим снять позицию «3». Здесь снова до и после очистки отображается значение.

десь снова до и после очистки отображается значен

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

Отобразятся предыдущий переключатель, а затем последующие значения

Этот процесс будет продолжаться, пока вы не продолжите вводить значения опций. Если вы хотите выйти из системы, нажмите Ctrl + c.

Заключение

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

Оцените статью
bestprogrammer.ru
Добавить комментарий