Другое

Проверка бита в языке программирования Си: описание, инструкции

Lorem ipsum dolor

Программисту Си не привыкать работать со структурой данных, типом данных или даже с байтами. Но бывают случаи более «глубокой» работы, когда нужна проверка бита в Си. Часто такие битовые операции нужны, когда:

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

Вы, конечно же, помните, что в состав одного байта входят 8 битов и любые числа и символы могут быть представлены в компьютере при помощи битов. Биты состоят только из 0 и 1.

Проверка бита в Си при помощи побитовых операторов

Проверка бита в Си возможна только с использованием побитовых операторов. Побитовый оператор — это оператор, который используется для исполнения операций непосредственно над битами. Использование побитовых операций — это не что иное, как битовое программирование. Цель использования побитовых операторов — увеличить скорость вычислений.

Проверка бита в Си может быть осуществлена при помощи следующих операторов:

  1. «>>» оператор «сдвиг вправо»;
  2. «<<» оператор «сдвиг влево»;
  3. «~» оператор «отрицания (NOT)»;
  4. «^» оператор «исключения (XOR)»;
  5. «&» оператор «И»;
  6. «|» оператор «ИЛИ».

Оператор сдвига «вправо» и «влево»

В языке Си, когда осуществляется проверка бита, иногда есть необходимость сдвигать биты вправо либо влево. Это делается при помощи соответствующих операторов.

Синтаксис примера будет выглядеть следующим образом:

ОПЕРАНД<<Х

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

Х — это количество битов, на сколько нужно будет сдвинуть.

То есть в представленном синтаксисе биты будут сдвинуты влево на значение числа «Х». А правая сторона сдвига будет наполняться «0».

Допустим, у нас есть некое выражение: «в=5». В двоичной системе это будет выглядеть так: «в=0101».

Допустим, мы хотим сдвинуть представленное значение влево на 2. Тогда мы получим следующее представление:

в<<2, это значит:

0101<<2 = 00010100

В итоге получим, что «в» приобрело новое значение и «в<<2» будет равняться «20».

Сдвиги вправо работают по той же схеме, только в другую сторону.

Оператор отрицания «NOT»

Когда нужна проверка бита в Си, данный оператор отрицания «~» довольно часто используется. Также его называют еще оператором дополнения. Он может принимать значение только одного операнда и выполняет свою операцию дополнения только над ним. Применяя этот оператор к любому биту, мы получаем результат, где «0» принимает значение «1», а «1» принимает значение «0».

Пример. Допустим, у нас есть некое выражение, где в=8. Это значит, что в=1000 в двоичной системе. После применения оператора дополнения над «в» получим следующий результат и новое значение в=0111.

Оператор исключения «XOR»

Оператор исключения, когда проводится проверка бита в Си, обозначается так: «^». Данное побитовое исключение работает следующим образом — проверяются оба операнда, и если один из битов задан как «1», а другой «0», то и результат будет «1», во всех остальных случаях, когда значение битов одинаково, результатом будет «0».

Пример. Допустим, у нас есть 2 переменные:

х=12

у=10

В двоичной системе это будет выглядеть так:

х = 0000 1100

у = 0000 1010

Теперь проведем следующую операцию: х ^ у и получим результат:

х ^ у = 0000 0110

То есть, как видно из примера, оба значения операндов сравниваются между собой, и когда один из битов любого из операндов равен «1», а у другого «0», то значение в результате будет «1», в других случаях, когда значения битов равны, всегда будет «0».

Проверка бита в Си при помощи оператора «И»

Проверка бита в Си иногда тесно связана с применением оператора «И», который обозначается как «&» (амперсанд). С обеих сторон оператора записываются два целых числа-значения. Происходит «сравнивание» этих значений битов. Когда значения в разных операндах равны «1», то на результате мы тоже увидим «1», в любых других сочетаниях результатом будет «0».

Пример. Допустим, у нас есть две переменные:

х = 6

у = 4

В двоичной системе это будет выглядеть так:

х = 0110

у = 0100

Применим к данным значением побитовый оператор «И» и получим следующее:

х & у = 0100

В примере видно, что, только когда в обоих значенияхзначение битов было равно «1», результатом тоже стала «1», в остальных случаях в результате записан «0».

Оператор «ИЛИ» при проверке битов в Си

Данный оператор обозначается как «|». С обеих сторон оператора должны быть записаны целочисленные значения, которые будут сравниваться. Когда в любом из значений будет найдена «1», в результате будет записана «1», даже если в обоих сравниваемых битах будет «1». В любых других случаях результатом будет «0».

Пример. Допустим, у нас есть две переменные:

х=23

у=10

В двоичной системе это будет выглядеть так:

х = 0001 0111

у = 0000 1010

Теперь применим к этим значениям побитовый оператор «ИЛИ» и получим следующий результат:

х|у = 0001 1111

В примере видно, что при обоих значениях «0» результатом тоже был «0», если же в любом из сравниваемых значений встречалась «1», то в результате мы тоже видим «1».

 

Заключение

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

Все перечисленные побитовые операторы используются в битовом программировании в разных областях:

  • системном программировании;
  • во встроенном;
  • в проектировании протоколов;
  • и др.

Поэтому знать, как проводится проверка бита в Си, нужно даже начинающим разработчикам на этом языке, потому что рано или поздно с этим сталкиваются все.

Схожие статьи

Как настроить CLion актуальной версии для запуска и компиляции
Другое

Как настроить CLion актуальной версии для запуска и компиляции

Интересные факты о Яве, сферы его применения и история создания
Другое

Интересные факты о Яве, сферы его применения и история создания

Kubernetes Vs. Openshift: в чем разница
Другое

Kubernetes Vs. Openshift: в чем разница

Технический долг или долг кодинга: плохая карма программиста
Другое

Технический долг или долг кодинга: плохая карма программиста