Top.Mail.Ru

Проверка бита в языке программирования Си

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

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


Вы конечно же помните, что в состав одного байта входят 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».

Заключение


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

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

Возможно вам будет интересно почитать статью “Машинное обучение с подкреплением”


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

Text.ru - 100.00%
Поделись статьей с друзьями!

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *