Виключне або c. Приклад розв'язання задачі XOR - виключає АБО. Приклади використання операцій зсуву у програмі

Найпростіші логічні операції

Найпростіші логічні операції відносяться до двозначної логіки. Їх 4 штуки: "НІ", "І", "АБО", "XOR". Також для позначення цих операцій використовують різні значки (“~”, “&” тощо).

При записі логічних формул замість слів “істина” та “брехня” зазвичай використовують стандартні міжнародні позначення:
Замість "істина" пишуть: true, T, t, 1.
Замість "брехня" пишуть: false, F, f, 0.

"НІ"

Операція “НЕ” перетворює істину на брехню, а брехня на істину:

НЕ true = false
НЕ false = true

Ця операція має різні інші назви: “логічне НЕ”, “заперечення”, “логічне заперечення”, “інверсія”, “логічна інверсія”. Для міжнародних позначень замість НЕ пишуть NOT.

У природній мові цієї операції відповідає додавання слів “неправда, що...” на початку висловлювання. Наприклад:

Застосування операції “НЕ” до висловлювання (1):

"Неправда, що Сурков винен мені грошей". (2)

Якщо вислів (1) хибний, то вислів (2) істинний. Якщо вислів (2) хибний, то вислів (1) істинний.

Неважко зрозуміти, що подвійне застосування “НЕ” повертає нас до колишньої істинності.

"Неправда, що неправда, що Сурков винен мені грошей". (3)

Істинність висловлювання (3) завжди збігається з істинністю висловлювання (1).

"І"

Операція "І" застосовується до двох висловлювань. Її результат "істина", тільки якщо обидва висловлювання істинні (а інакше "брехня"):

false І false = false
false І true = false
true І false = false
true І true = true

Ця операція має різні інші назви: “логічне І”, “кон'юнкція”, “логічне множення”. Для міжнародних позначень замість “І” пишуть “AND”.

У природній мові цієї операції відповідає вставка спілки "і" між висловлюваннями. Наприклад:

“Сурков винен мені грошей”. (1)
"Петров винен мені грошей". (2)

Застосування операції “І” до висловів (1) та (2):

“Сурков винен мені грошей, і Петров винен мені грошей”. (3)

Цю фразу можна скоротити, зберігши колишній зміст:

"Сурков і Петров винні мені грошей". (3)

Висловлювання (3) істинно лише тоді, коли істинні обидва висловлювання: (1) і (2). Якщо хоча б одне з них хибне, то результат теж хибний. Якщо обидва помилкові – теж.

Тобто, якщо Петров мені грошей не заборгував, а заборгував лише Сурков, тоді вислів (3) не буде “напівправдою” чи “напівложею”, а буде просто брехнею.

"АБО"

Операція “АБО” застосовується до двох висловлювань. Її результат "істина", якщо хоча б один вислів істинний (а інакше "брехня"):

false АБО false = false
false АБО true = true
true АБО false = true
true АБО true = true

У цій операції бувають різні інші назви: "логічне АБО", "що включає АБО", "диз'юнкція", "логічне додавання". Для міжнародних позначень замість "АБО" пишуть "OR".
У природній мові цієї операції відповідає вставка спілки "або" між висловлюваннями, але... не завжди (див. нижче про операцію "XOR"). Наприклад:

"Я хочу попити". (1)
"Я хочу поїсти". (2)

Застосування операції “АБО” до висловів (1) та (2):

“Я хочу попити, чи хочу поїсти”. (3)

По-російськи звучить правильно, але кострубато, і цю фразу можна скоротити, зберігши колишній сенс:

“Я хочу попити чи поїсти”. (3)

Вислів (3) істинний тоді, коли істинно хоча б одне з висловлювань (1) і (2), а можна обидва. Якщо обидва висловлювання хибні, то результат теж хибний.

Тобто, якщо я хочу їсти, але не пити, тоді вислів (3) є істинним. Якщо я не проти і поїсти, і попити, висловлювання (3) теж є істинним. Хибно воно тоді, коли я не хочу ні того, ні іншого.

"XOR"

Операція “XOR” застосовується до двох висловлювань. Її результат "істина", якщо одно з висловлювань істинно (а інакше "брехня"):

false XOR false = false
false XOR true = true
true XOR false = true
true XOR true = false

У цій операції бувають різні інші назви: "Виключає АБО", "додавання за модулем 2", "логічне додавання за модулем 2". "XOR" - це міжнародне позначення, загальноприйнятого "російського" аналога немає.

У природній мові цієї операції відповідає вставка спілки "або" між висловлюваннями - так само, як у випадку з операцією "АБО". Наприклад:

“Я збираюся просити збільшення зарплати”. (1)
"Я спробую заощадити". (2)

Застосування операції “XOR” до висловів (1) та (2):

“Я збираюся просити збільшення зарплати або я спробую заощадити”. (3)

Скорочено:

"Я збираюся просити прибавки до зарплати або спробую заощадити". (3)

Вислів (3) істинний тоді, коли істинно одно з висловлювань (1) і (2). Якщо я не збираюся ні просити збільшення, ні економити, тоді фраза хибна. Також я мав на увазі, що не збираюся робити і те, й інше одночасно.

Зверніть увагу на різницю між операціями “АБО” та “XOR”. Вона полягає лише в останньому правилі:

true АБО true = true
true XOR true = false

У природній мові обидві операції зображуються одним і тим самим союзом "або". Це приклад неоднозначності природної мови. Якщо пам'ятаєте, омоніми та багатозначні слова можуть мати більше одного значення. Союз “або” саме такий: він має два можливі значення. Перше виражається логічною операцією "АБО", друге - логічною операцією "XOR".

В англійській мові існують ті ж проблеми: союз “or” має ті самі два значення. А ось стародавнім римлянам було простіше, тому що в латині є два різні слова: "vel" (операція "АБО") та "aut" (операція "XOR").

Оскільки різниця між операціями "АБО" і "XOR" невелика (всього одне останнє правило), то іноді ця різниця не має значення. Іноді у тому, що мають на увазі, можна здогадатися по інтонації, чи з контексту. Іноді визначити точний зміст так і не вдається.

У цій статті ми поговоримо про деякі бітові операції. Розглянемо основні з них: XOR (що виключає АБО), AND (І), NOT (НЕ) а також OR (АБО).

Як відомо, мінімальною одиницею вимірювання інформації є біт, що зберігає одне з 2-х значень: 0 ( False, Неправда) або 1 ( True, Істина). Таким чином, бітовий осередок може одночасно перебувати лише в одному з двох можливих станів.

Для маніпуляцій з бітами використовують певні операції. логічні чи булеві. Вони можуть застосовуватися до будь-якого біта, незалежно від того, яке значення має - нуль або одиниця. Що ж, погляньмо на приклади використання трьох основних логічних операцій.

Логічна операція AND(і)

ANDпозначається знаком &.

Оператор AND виконується з двома бітами, візьмемо, наприклад, a і b. Результат виконання операції AND дорівнює 1, якщо a і b дорівнюють 1. В інших випадках результат дорівнює 0. Наприклад, за допомогою AND ви можете дізнатися, чи то парне число, чи ні.

Подивіться таблицю істинності операції AND:

Логічна операція OR (АБО)

позначається знаком | .

Оператор ORтакож виконується з двома бітами (a і b). Результат дорівнює 0, якщо a і b дорівнюють 0, інакше він дорівнює 1. Дивимося таблицю істинності.

Логічна операція XOR (що виключає АБО)

Оператор XOR позначається ^.

XORвиконується з двома бітами (a і b). Результат виконання операції XOR ( що виключає АБО) дорівнює 1, коли один із бітів b або a дорівнює 1. В інших ситуаціях результат застосування оператора XOR дорівнює 0.

Таблиця істинності логічної операції для XOR (що виключає) виглядає так:

Використовуючи XOR (що виключає АБО), ви можете змінити значення 2-х змінних однакового типу даних, не використовуючи тимчасову змінну. А ще за допомогою XOR можна зашифрувати текст, наприклад:

String msg = "This is a message"; char message = msg.toCharArray(); String key = ".*)"; String encryptedString = New String(); for(int i = 0; i< message.length; i++){ encryptedString += message[i]^key.toCharArray(); }

Згоден, XOR - далеко не найнадійніший метод шифрування, але це не означає, що його не можна зробити частиною якогось шифрувального алгоритму.

Логічна операція NOT (НЕ)

Це побитове заперечення, тому виконується з однією бітом і позначається ~ .

Результат залежить від стану біта. Якщо він у нульовому стані, то результат операції - одиниця і навпаки. Все дуже просто.

Ці 4 логічні операції слід запам'ятати насамперед, тому що з їх допомогою можна отримати практично будь-який можливий результат. Також існують такі операції, як<< (побитовый сдвиг влево) и >> (Побітовий зсув праворуч).


Оператор Синтаксис Опис
AND A AND B Кон'юнкція: Якщо А та В мають значення True, то - True. Інакше - False
OR A OR B Диз'юнкція: Якщо будь-який з операнда має значення True, то - True. Інакше - False
NOT NOT A Заперечення: Якщо А має значення False, то – True. Інакше - False
XOR A XOR B Виняток: Якщо А має значення True або має значення True, то - True. Інакше - False
EQV A EQV B Еквівалентність: Якщо А має таке ж значення як і, то - True. Інакше - False
IMP A IMP B Імплікація: Якщо А має значення True і має значення False, то - False. Інакше - True

Як операнда для логічного оператора можна використовувати будь-який дійсний вираз, що має результат типу Boolean, а також число, яке може бути перетворене на значення Boolean.

Результатом логічної операції є значення типу Boolean (або Null, якщо хоча б один із операндів має значення Null).

Логічний оператор AND

Синтаксис:
Операнд_1 AND Операнд_2


Оператор AND виконує логічну кон'юнкцію.

Результатом цієї операції є значення True, тільки коли обидва операнди мають значення True, інакше - False.


Таблиця істинності


Оператор AND можна використовувати для кількох операндів:


(5 3) AND (5=6) результатом буде False


Незалежно від кількості операндів результатом логічної операції AND буде True лише у тому випадку, коли всі операнди вирази матимуть значення True. У будь-якому іншому випадку результатом буде False. Зверніть увагу, що операнди полягають у круглі дужки. VBA спочатку обчислює значення кожного операнда всередині дужок, а потім уже весь вираз повністю.

Логічний оператор OR

Синтаксис:
Операнд_1 OR Операнд_2


Оператор OR виконує логічну диз'юнкцію.

Результатом цієї операції є значення True, якщо хоча б один з операндів має значення True, інакше – False.


Таблиця істинності


Оператор OR можна використовувати для кількох операндів:


(5 3) OR (5=6) результатом буде True


Незалежно від кількості операндів результатом логічної операції OR завжди буде True в тому випадку, якщо хоча б один з операндів виразу матиме значення True. Інакше результатом буде False.

Оператори AND та OR можна комбінувати:


((5 3)) OR (5=6) результатом буде True

Логічний оператор NOT

Синтаксис:
NOT Операнд


Оператор NOT виконує логічне заперечення.

Оператор NOT використовує лише один операнд.


Таблиця істинності


Оператори AND OR NOT можна комбінувати:


((5 3)) OR NOT (5=6) результатом буде True

Логічний оператор XOR

Синтаксис:
Операнд_1 XOR Операнд_2


Оператор XOR виконує логічний виняток.

Результатом цієї операції є значення True, якщо операнди мають різні значення, інакше – False.


Таблиця істинності


((5 3)) OR NOT (5=6) XOR (5=5) результатом буде False

Логічний оператор EQV

Синтаксис:
Операнд_1 EQV Операнд_2


Оператор EQV – це оператор логічної еквівалентності.

Результатом цієї операції є значення True, якщо операнди мають однакові значення, інакше – False.


Таблиця істинності


((5 3)) OR NOT (5=6) EQV (5=5) результатом буде True

Логічний оператор IMP

Синтаксис:
Операнд_1 IMP Операнд_2


Оператор IMP виконує логічну операцію імплікації.


Таблиця істинності


((5 3)) OR NOT (5=6) IMP (5=5) результатом буде True


Логічний оператор IMP найменш інтуїтивно зрозумілий із усіх логічних операторів. На щастя, необхідність його застосування виникає досить рідко.

Операція що виключає АБО (нерівнозначність, додавання по модулю два) позначається символом і відрізняється від логічного АБО тільки при A = 1 і B = 1.

Таким чином, нерівнозначність двох висловлювань Х1 і Х2 називають таке висловлювання Y, яке істинно тоді і лише тоді, коли одне з цих висловлювань істинне, а інше хибне.

Визначення цієї операції може бути записано у вигляді таблиці істинності (таблиця 6):

Таблиця 6 – Таблиця істинності операції «ВИКЛЮЧНЕ АБО»

Як очевидно з таблиці 6, логіка роботи елемента відповідає його назві.

Це той самий елемент «АБО» з однією невеликою відмінністю. Якщо значення на обох входах дорівнює логічній одиниці, то на виході елемента «ВИКЛЮЧНЕ АБО», на відміну від елемента «АБО», не одиниця, а нуль.

Операція «ВИКЛЮЧНЕ АБО» фактично порівнює на збіг два двійкових розряду.

Кожна логічна зв'язка розглядається як операція над логічними висловлюваннями та має свою назву та позначення (таблиця 7).

Таблиця 7 - Основні логічні операції

Позначення

операції

Читається

Назва операції

Альтернативні позначення

Заперечення (інверсія)

Чорта зверху

Кон'юнкція (логічне множення)

Диз'юнкція (логічне додавання)

Якщо то

Імплікація

Тоді і лише тоді

Еквіваленція

Або або

ВИКЛЮЧНЕ АБО (додавання за модулем 2)

  1. Порядок виконання логічних операцій у складному логічному вираженні

Система логічних операцій інверсії, кон'юнкції, диз'юнкції дозволяє побудувати як завгодно складне логічне вираження.

При обчисленні значення логічного виразу прийнято певний порядок виконання логічних операцій.

1. Інверсія.

2. Кон'юнкція.

3. Диз'юнкція.

4. Імплікація.

5. Еквівалентність.

Для зміни зазначеного порядку виконання операцій використовуються дужки.

  1. Логічні вирази та таблиці істинності

    1. Логічні вирази

Кожен складний вислів можна виразити у вигляді формули (логічного виразу), до якої входять логічні змінні,що позначають висловлювання, та знаки логічних операцій,що позначають логічні функції.

Для запису складного висловлювання як логічного висловлювання формальною мовою (мові алгебри логіки) у складному висловлюванні потрібно виділити прості висловлювання і логічні зв'язок з-поміж них.

Запишемо у формі логічного виразу складний вислів «(2·2=5 або 2∙2=4) та (2∙2≠5 або 2∙ 2 4)».

Проаналізуємо складове висловлювання. Воно містить два простих висловлювання:

А = "2 2 = 5"-хибно (0),

В = "2 2 = 4"-істинно (1).

Тоді складний вислів можна записати у такій формі:

«( АабоУ) і ( абоУ)».

Тепер необхідно записати висловлювання у формі логічного виразу з урахуванням послідовності виконання логічних операцій. При виконанні логічних операцій визначено такий порядок їх виконання:

інверсія, кон'юнкція, диз'юнкція.

Для зміни зазначеного порядку можуть використовуватися дужки:

F = (AvУ) & (Ā vУ).

Істинність чи хибність складових висловлювань можна визначати суто формально, керуючись законами алгебри висловлювань, не звертаючись до змістового висловлювань.

Підставимо у логічне вираження значення логічних змінних і, використовуючи таблиці істинності базових логічних операцій, отримаємо значення логічної функції:

F= (A v) & ( Ā v) = (0 v 1) & (1 v 0) = 1 & 1 = 1.

      Таблиці істинності

Таблиці, у яких логічні операції відбивають результати обчислень складних висловлювань за різних значеннях вихідних простих висловлювань, називаються таблицями істинності.

Прості висловлювання позначаються змінними (наприклад, A та B).

При побудові таблиць істинності доцільно керуватися певною послідовністю дій:

    необхідно визначити кількість рядків у таблиці істинності. Воно дорівнює кількості можливих комбінацій значень логічних змінних, що входять до логічного виразу. Якщо кількість логічних змінних дорівнює п,то:

кількість рядків = 2 n .

У нашому випадку логічна функція

має 2 змінні і, отже, кількість рядків у таблиці істинності має дорівнювати 4;

    Необхідно визначити кількість стовпців у таблиці істинності, яка дорівнює кількості логічних змінних плюс кількість логічних операцій.

У нашому випадку кількість змінних дорівнює двом: А та В, а кількість логічних операцій - п'яти (таблиця 8), тобто кількість стовпців таблиці істинності дорівнює семи;

    необхідно побудувати таблицю істинності із зазначеною кількістю рядків та стовпців, позначити стовпці та внести до таблиці можливі набори значень вихідних логічних змінних;

    необхідно заповнити таблицю істинності по стовпцям, виконуючи базові логічні операції у необхідній послідовності та відповідно до їх таблиць істинності.

Тепер ми можемо визначити значення логічної функції будь-якого набору значень логічних змінних.

Таблиця 8 - Таблиця істинності логічної функції

Позначається оборотом промови «чи…, чи…» Складове твердження «чи A, чи B» вважається істинним, коли істинно чи A, чи B, але з обидва одночасно; в іншому випадку складне твердження хибне.

Тобто. результат дійсний (рівний 1), якщо A не дорівнює B (A≠B).

Цю операцію нерідко порівнюють із диз'юнкцією тому, що вони дуже схожі за властивостями, і обидві мають схожість із союзом «або» у повсякденному мовленні. Порівняйте правила цих операцій:

1. істинно, якщо істинно або , абообидва одразу.

2. істинно, якщо істинно або, але необидва одразу.

Операція виключаєостанній варіант ("обидва відразу") і з цієї причини називається виключним "АБО". НеоднозначністьПриродною мовою є те, що союз «або» може застосовуватися в обох випадках.

5. Імплікація (логічне слідування)утворюється з'єднанням двох висловлювань за допомогою обороту мови «якщо …, то ….».

Запис: А®В

Складове висловлювання, утворене з допомогою операції імплікації, хибно тоді й лише тоді, коли з істинної передумови (першого висловлювання) випливає хибний висновок (друге висловлювання).

Тобто. якщо з 1 слідує 0, то результат – 0, в інших випадках – 1.

Наприклад, висловлювання «Якщо число ділиться на 10, воно ділиться на 5» істинно, т.к. істинні і перший і другий вислів.

Висловлювання «Якщо число ділиться на 10, воно ділиться на 3» хибно, т.к. з істинної причини робиться хибний висновок.

"Цей чотирикутник - квадрат" (А) та "Біля цього чотирикутника можна описати коло" (У). Тоді складне висловлювання, читається як "Якщо цей чотирикутник квадрат, то біля нього можна описати коло".

У звичайній мові зв'язка "якщо то"описує причинно-наслідковий зв'язок між висловлюваннями. Але в логічних операціях сенс висловлювань не враховується. Розглядається лише їхня істинність чи хибність. Тому не треба бентежитися "безглуздістю" імплікацій, освічених висловлюваннями, зовсім не пов'язаними за змістом. Наприклад, такими: "якщо президент США - демократ, то в Африці водяться жирафи", "якщо кавун - ягода, то в бензоколонці є бензин".

6. Еквівалентність (логічна рівність, ~ º ¢) утворюється з'єднанням двох висловлювань в одне за допомогою мовного звороту «…тоді і тільки тоді, коли...»

Складове висловлювання, утворене операцією еквівалентності, істинно тоді й лише тоді, коли обидва висловлювання одночасно або хибні, або щирі.

Наприклад, вислів «Комп'ютер може проводити обчислення тоді й тільки тоді, коли він включений» і «Комп'ютер не може робити обчислення тоді і тільки тоді, коли він не включений» - істинні, оскільки обидва прості висловлювання одночасно є істинними.


Таблиці істинності

Для кожного складового висловлювання (логічної функції) можна побудувати таблицю істинності, яка визначає його істинність чи хибність за всіх можливих комбінаціях вихідних значень простих висловлювань.

Таблиця істинностіце табличне подання логічної схеми (операції), в якому перераховані всі можливі поєднання значень істинності вхідних сигналів (операндів) разом зі значенням істинності вихідного сигналу (результату операції) для кожного з цих поєднань.

Відобразимо вище розглянуті логічні операції у таблиці істинності:

В алгебрі висловлювань всі логічні функції шляхом логічних перетворень можуть бути зведені до трьох базових: логічного додавання, логічного множення та логічного заперечення.

Доведемо, що операція імплікація А®В є рівносильною логічному виразу: