Рейтинг:   / 2
ПлохоОтлично 

Поразрядные логические операции C++

В С++ существуют три поразрядные логические операции:

  1. поразрядное И, обозначение: &
  2. поразрядное исключающее ИЛИ, обозначение:  ^
  3. поразрядное включающее ИЛИ, обозначение:  |

Так же в С++ существуют логические операции: ИЛИ — ||И — &&. У многих возникает вопрос, “Чем отличаются операции: & и &&| и || ?”. Ответ на этот вопрос можно получить, если понять принцип работы поразрядных логических операций. Сразу могу сказать одно, что логические операции && и || используются только для построения логических условий. Тогда как поразрядные логические операции применяются в бинарной арифметике. Данные операции работают с битами ячеек памяти, причём операнды и результат могут быть заданы в другой форме, например, в десятичной.  Дальше рассмотрим каждую из операций подробно.

Поразрядная логическая операция И.
Обозначения: X, Y – операнды; F – результат выполнения логической операции

Таблица 1 — Таблица истинности поразрядного И
XY  F
0 0 0
0 1 0
1 0 0
1 1 1

Из таблицы истинности видно, что результат будет нулевым, если хотя бы один из битов 0. Если оба бита равны 1, то результат равен 1.
Пример с числами:
Для упрощения вычислений возьмем четырёхразрядные(4-х разрядный двоичный код) положительные операнды. Сначала переводим числа в двоичный код, а потом выполняем операцию.

   1111 = 15                            1000 = 8
& 1001 = 9                          & 1010 = 10
1001 = 9                              1000 = 8
Результат равен 9.       Результат равен 8.

Поразрядное исключающее ИЛИ.

Таблица 2 — Таблица истинности поразрядного исключающего ИЛИ
XYF
0 0 0
0 1 1
1 0 1
1 1 0

Из таблицы истинности видно, что результат будет нулевым, если оба бита будут равны, во всех остальных случаях результат равен 1.
Пример с числами:

   1111 = 15                           1000  = 8
^ 1001 = 9                           ^ 1010 = 10
0110 = 6                              0010 = 2
Результат равен 6.                Результат равен 2.

Поразрядное включающее ИЛИ.

Таблица 3 — Таблица истинности поразрядного включающего ИЛИ
XYF
0 0 0
0 1 1
1 0 1
1 1 1

Из таблицы истинности видно, что результат будет нулевым, если оба бита будут равны 0, во всех остальных случаях результат равен 1.
Пример с числами:

  1111  = 15                             1000 = 8
1001 = 9                              | 1010 = 10
1111 = 15                             1010 = 10
Результат равен 15.              Результат равен 10.

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

При использовании поразрядных логических операций в  логических условиях результат получается такой же, как и при использовании логических операций &&   ||. И это понятно, так как логика у них одинакова!!

В С++ ложному условию соответствует нулевое значение, а истинному любое целое значение большее нуля.  Так что константы true  и false интерпретируются как целые числа, после чего поразрядные логические операции поразрядно формируют результат условия. Но прямое назначение поразрядных логических операций – это бинарная арифметика.

 

   
© программирование с нуля самоучитель | самоучитель по программированию | самоучитель по программированию с нуля | курсы программирования | курсы программирования с нуля