Исключающее или используется в режиме. Пример решения задачи XOR — исключающего ИЛИ

Исключающее или используется в режиме. Пример решения задачи XOR — исключающего ИЛИ
Исключающее или используется в режиме. Пример решения задачи XOR — исключающего ИЛИ

Абсолютно все цифровые микросхемы состоят из одних и тех же логических элементов – «кирпичиков» любого цифрового узла. Вот о них мы и поговорим сейчас.

Логический элемент – это такая схемка, у которой несколько входов и один выход. Каждому состоянию сигналов на входах, соответствует определенный сигнал на выходе.

Итак, какие бывают элементы?

Элемент «И» (AND)

Иначе его называют «конъюнктор».

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

Вот так выглядит элемент «И» и его таблица истинности:

Поскольку вам придется общаться как с русской, так и с буржуйской тех. документацией, я буду приводить условные графические обозначения (УГО) элементов и по нашим и по не нашим стандартам.

Смотрим таблицу истинности, и проясняем в мозгу принцип. Понять его не сложно: единица на выходе элемента «И» возникает только тогда, когда на оба входа поданы единицы. Это объясняет название элемента: единицы должны быть И на одном, И на другом входе.

Если посмотреть чуток иначе, то можно сказать так: на выходе элемента «И» будет ноль в том случае, если хотя бы на один из его входов подан ноль. Запоминаем. Идем дальше.

Элемент «ИЛИ» (OR)

По другому, его зовут «дизъюнктор».

Любуемся:

Опять же, название говорит само за себя.

На выходе возникает единица, когда на один ИЛИ на другой ИЛИ на оба сразу входа подана единица. Этот элемент можно назвать также элементом «И» для негативной логики: ноль на его выходе бывает только в том случае, если и на один и на второй вход поданы нули.

Элемент «НЕ» (NOT)

Чаще, его называют «инвертор».

Надо чего-нибудь говорить по поводу его работы?

Элемент «И-НЕ» (NAND)

Элемент И-НЕ работает точно так же как «И», только выходной сигнал полностью противоположен. Там где у элемента «И» на выходе должен быть «0», у элемента «И-НЕ» - единица. И наоборот. Э то легко понять по эквивалентной схеме элемента:

Элемент «ИЛИ-НЕ» (NOR)

Та же история – элемент «ИЛИ» с инвертором на выходе.

Следующий товарищ устроен несколько хитрее:
Элемент «Исключающее ИЛИ» (XOR)

Он вот такой:

Операция, которую он выполняет, часто называют «сложение по модулю 2». На самом деле, на этих элементах строятся цифровые сумматоры.

Смотрим таблицу истинности. Когда на выходе единицы? Правильно: когда на входах разные сигналы. На одном – 1, на другом – 0. Вот такой он хитрый.

Эквивалентная схема примерно такая:

Ее запоминать не обязательно.

Собственно, это и есть основные логические элементы. На их основе строятся абсолютно любые цифровые микросхемы. Даже ваш любимый Пентиум 4.

Ну и напоследок – несколько микросхем, внутри которых содержатся цифровые элементы. Около выводов элементов обозначены номера соответствующих ног микросхемы. Все микросхемы, перечисленные здесь, имеют 14 ног. Питание подается на ножки 7 (-) и 14 (+). Напряжение питания – смотри в таблице в предыдущем параграфе.

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

    ИЛИ - логическое сложение (дизъюнкция ) - OR ;

    И - логическое умножение (конъюнкция ) - AND ;

    НЕ - логическое отрицание (инверсия ) - NOT .

Примем за основу позитивную логику, где высокий уровень будет "1", а низкий уровень примем за "0". Чтобы можно было более наглядно рассмотреть выполнение логических операций, существуют таблицы истинности для каждой логической функции. Сразу нетрудно понять, что выполнение логических функций «и» и «или» подразумевают количество входных сигналов не менее двух, но их может быть и больше.

Логический элемент И.

На рисунке представлена таблица истинности элемента "И " с двумя входами. Хорошо видно, что логическая единица появляется на выходе элемента только при наличии единицы на первом входе и на втором. В трёх остальных случаях на выходе будут нули.

Вход X1 Вход X2 Выход Y
0 0 0
1 0 0
0 1 0
1 1 1

На принципиальных схемах логический элемент "И" обозначают так.

На зарубежных схемах обозначение элемента "И" имеет другое начертание. Его кратко называют AND .

Логический элемент ИЛИ.

Элемент "ИЛИ " с двумя входами работает несколько по-другому. Достаточно логической единицы на первом входе или на втором как на выходе будет логическая единица. Две единицы так же дадут единицу на выходе.

Вход X1 Вход X2 Выход Y
0 0 0
1 0 1
0 1 1
1 1 1

На схемах элемент "ИЛИ" изображают так.

На зарубежных схемах его изображают чуть по-другому и называют элементом OR .

Логический элемент НЕ.

Элемент, выполняющий функцию инверсии «НЕ » имеет один вход и один выход. Он меняет уровень сигнала на противоположный. Низкий потенциал на входе даёт высокий потенциал на выходе и наоборот.

Вход X Выход Y
0 1
1 0

Вот таким образом его показывают на схемах.

В зарубежной документации элемент "НЕ" изображают следующим образом. Сокращённо называют его NOT .

Все эти элементы в интегральных микросхемах могут объединяться в различных сочетаниях. Это элементы: И-НЕ, ИЛИ-НЕ, и более сложные конфигурации. Пришло время поговорить и о них.

Логический элемент 2И-НЕ.

Рассмотрим несколько реальных логических элементов на примере серии транзисторно-транзисторной логики (ТТЛ) К155 с малой степенью интеграции. На рисунке когда-то очень популярная микросхема К155ЛА3, которая содержит четыре независимых элемента 2И - НЕ . Кстати, с помощью её можно собрать простейший маячок на микросхеме .

Цифра всегда обозначает число входов логического элемента. В данном случае это двухвходовой элемент «И» выходной сигнал которого инвертируется. Инвертируется, это значит "0" превращается в "1", а "1" превращается в "0". Обратим внимание на кружочек на выходах - это символ инверсии . В той же серии существуют элементы 3И-НЕ, 4И-НЕ, что означает элементы «И» с различным числом входов (3, 4 и т.д.).

Как вы уже поняли, один элемент 2И-НЕ изображается вот так.

По сути это упрощённое изображение двух объёдинённых элементов: элемента 2И и элемента НЕ на выходе.

Зарубежное обозначение элемента И-НЕ (в данном случае 2И-НЕ). Называется NAND .

Таблица истинности для элемента 2И-НЕ.

Вход X1 Вход X2 Выход Y
0 0 1
1 0 1
0 1 1
1 1 0

В таблице истинности элемента 2И - НЕ мы видим, что благодаря инвертору получается картина противоположная элементу «И». В отличие от трёх нулей и одной единицы мы имеем три единицы и ноль. Элемент «И - НЕ» часто называют элементом Шеффера.

Логический элемент 2ИЛИ-НЕ.

Логический элемент 2ИЛИ - НЕ представлен в серии К155 микросхемой 155ЛЕ1. Она содержит в одном корпусе четыре независимых элемента. Таблица истинности так же отличается от схемы "ИЛИ" применением инвертирования выходного сигнала.

Таблица истинности для логического элемента 2ИЛИ-НЕ.

Вход X1 Вход X2 Выход Y
0 0 1
1 0 0
0 1 0
1 1 0

Изображение на схеме.

На зарубежный лад изображается так. Называют как NOR .

Мы имеем только один высокий потенциал на выходе, обусловленный подачей на оба входа одновременно низкого потенциала. Здесь, как и на любых других принципиальных схемах, кружочек на выходе подразумевает инвертирование сигнала. Так как схемы И - НЕ и ИЛИ - НЕ встречаются очень часто, то для каждой функции имеется своё условное обозначение. Функция И - НЕ обозначается значком "& ", а функция ИЛИ - НЕ значком "1 ".

Для отдельного инвертора таблица истинности уже приведена выше. Можно добавить, что количество инверторов в одном корпусе может достигать шести.

Логический элемент "исключающее ИЛИ".

К числу базовых логических элементов принято относить элемент реализующий функцию «исключающее ИЛИ». Иначе эта функция называется «неравнозначность».

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

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

Вход X1 Вход X2 Выход Y
0 0 0
1 0 1
0 1 1
1 1 0

Эти логические элементы находят своё применение в сумматорах. «Исключающее ИЛИ» изображается на схемах знаком равенства перед единицей "=1 ".

На зарубежный манер "исключающее ИЛИ" называют XOR и на схемах рисуют вот так.

Кроме вышеперечисленных логических элементов, которые выполняют базовые логические функции очень часто, используются элементы, объединённые в различных сочетаниях. Вот, например, К555ЛР4. Она называется очень серьёзно 2-4И-2ИЛИ-НЕ.

Её таблица истинности не приводится, так как микросхема не является базовым логическим элементом. Такие микросхемы выполняют специальные функции и бывают намного сложнее, чем приведённый пример. Так же в логический базис входят и простые элементы "И" и "ИЛИ". Но они используются гораздо реже. Может возникнуть вопрос, почему эта логика называется транзисторно-транзисторной.

Если посмотреть в справочной литературе схему, допустим, элемента 2И - НЕ из микросхемы К155ЛА3, то там можно увидеть несколько транзисторов и резисторов. На самом деле ни резисторов, ни диодов в этих микросхемах нет. На кристалл кремния через трафарет напыляются только транзисторы, а функции резисторов и диодов выполняют эмиттерные переходы транзисторов. Кроме того в ТТЛ логике широко используются многоэмиттерные транзисторы. Например, на входе элемента 4И стоит четырёхэмиттерный

Бит — это минимальная единица измерения объёма информации, так как она хранит одно из двух значений — 0 (False) или 1 (True). False и True в переводе на русский ложь и истина соответственно. То есть одна битовая ячейка может находиться одновременно лишь в одном состоянии из возможных двух. Напомню, два возможных состояния битовой ячейки равны — 1 и 0.
Есть определённые операции, для манипуляций с битами. Эти операции называются логическими или булевыми операциями, названные в честь одного из математиков — Джорджа Буля (1815-1864), который способствовал развитию этой области науки.
Все эти операции могут быть применены к любому биту, независимо от того, какое он имеет значение — 0(нуль) или 1(единицу). Ниже приведены основные логические операции и примеры их использования.

Логическая операция И (AND)

Обозначение AND: &

Логическая операция И выполняется с двумя битами, назовем их a и b. Результат выполнения логической операции И будет равен 1, если a и b равны 1, а во всех остальных (других) случаях, результат будет равен 0. Смотрим таблицу истинности логической операции and.

a(бит 1) b(бит 2) a(бит 1) & b(бит 2)
0 0 0
0 1 0
1 0 0
1 1 1

Логическая операция ИЛИ (OR)

Обозначение OR: |

Логическая операция ИЛИ выполняется с двумя битами (a и b). Результат выполнения логической операции ИЛИ будет равен 0, если a и b равны 0 (нулю), а во всех остальных (других) случаях, результат равен 1 (единице). Смотрим таблицу истинности логической операции OR.

a(бит 1) b(бит 2) a(бит 1) | b(бит 2)
0 0 0
0 1 1
1 0 1
1 1 1

Логическая операция исключающее ИЛИ (XOR).

Обозначение XOR: ^
Логическая операция исключающее ИЛИ выполняется с двумя битами (a и b). Результат выполнения логической операции XOR будет равен 1 (единице), если один из битов a или b равен 1 (единице), во всех остальных случаях, результат равен 0 (нулю). Смотрим таблицу истинности логической операции исключающее ИЛИ.

a(бит 1) b(бит 2) a(бит 1) ^ b(бит 2)
0 0 0
0 1 1
1 0 1
1 1 0

Логическая операция НЕ (not)

Обозначение NOT: ~
Логическая операция НЕ выполняется с одним битом. Результат выполнения этой логической операции напрямую зависит от состояния бита. Если бит находился в нулевом состоянии, то результат выполнения NOT будет равен единице и наоборот. Смотрим таблицу истинности логической операции НЕ.

a(бит 1) ~a(отрицание бита)
0 1
1 0

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

Назначение сервиса . Онлайн-калькулятор предназначен для построения таблицы истинности для логического выражения .
Таблица истинности – таблица содержащая все возможные комбинации входных переменных и соответствующее им значения на выходе.
Таблица истинности содержит 2 n строк, где n – число входных переменных, и n+m – столбцы, где m – выходные переменные.

Инструкция . При вводе с клавиатуры используйте следующие обозначения: Например, логическое выражение abc+ab~c+a~bc необходимо ввести так: a*b*c+a*b=c+a=b*c
Для ввода данных в виде логической схемы используйте этот сервис .

Правила ввода логической функции

  1. Вместо символа v (дизъюнкция, ИЛИ) используйте знак + .
  2. Перед логической функцией не надо указывать обозначение функции. Например, вместо F(x,y)=(x|y)=(x^y) необходимо ввести просто (x|y)=(x^y) .
  3. Максимальное количество переменных равно 10 .

Проектирование и анализ логических схем ЭВМ ведётся с помощью специального раздела математики - алгебры логики. В алгебре логики можно выделить три основные логические функции: "НЕ" (отрицание), "И" (конъюнкция), "ИЛИ" (дизъюнкция).
Для создания любого логического устройства необходимо определить зависимость каждой из выходных переменных от действующих входных переменных такая зависимость называется переключательной функцией или функцией алгебры логики.
Функция алгебры логики называется полностью определённой если заданы все 2 n её значения, где n – число выходных переменных.
Если определены не все значения, функция называется частично определённой.
Устройство называется логическим, если его состояние описывается с помощью функции алгебры логики.
Для представления функции алгебры логики используется следующие способы:

  • словесное описание – это форма, которая используется на начальном этапе проектирования имеет условное представление.
  • описание функции алгебры логики в виде таблицы истинности.
  • описание функции алгебры логики в виде алгебраического выражения: используется две алгебраические формы ФАЛ:
    а) ДНФ – дизъюнктивная нормальная форма – это логическая сумма элементарных логических произведений. ДНФ получается из таблицы истинности по следующему алгоритму или правилу:
    1) в таблице выбираются те строки переменных для которых функция на выходе =1 .
    2) для каждой строки переменных записывается логическое произведение; причём переменные =0 записываются с инверсией.
    3) полученное произведение логически суммируется.
    Fднф= X 1 *Х 2 *Х 3 ∨ Х 1 x 2 Х 3 ∨ Х 1 Х 2 x 3 ∨ Х 1 Х 2 Х 3
    ДНФ называется совершенной, если все переменные имеют одинаковый ранг или порядок, т.е. в каждое произведение обязательно должны включаться все переменные в прямом или инверсном виде.
    б) КНФ – конъюнктивная нормальна форма – это логическое произведение элементарных логических сумм.
    КНФ может быть получена из таблицы истинности по следующему алгоритму:
    1) выбираем наборы переменных для которых функция на выходе =0
    2) для каждого набора переменных записываем элементарную логическую сумму, причём переменные =1 записываются с инверсией.
    3) логически перемножаются полученные суммы.
    Fскнф=(X 1 V X 2 V X 3) ∧ (X 1 V X 2 V X 3) ∧ (X 1 V X 2 V X 3) ∧ (X 1 V X 2 V X 3)
    КНФ называется совершенной , если все переменные имеют одинаковый ранг.
По алгебраической форме можно построить схему логического устройства , используя логические элементы.

Рисунок1- Схема логического устройства

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

Операция НЕ - логическое отрицание (инверсия)

Логическая операция НЕ применяется к одному аргументу, в качестве которого может быть и простое, и сложное логическое выражение. Результатом операции НЕ является следующее:
  • если исходное выражение истинно, то результат его отрицания будет ложным;
  • если исходное выражение ложно, то результат его отрицания будет истинным.
Для операции отрицания НЕ приняты следующие условные обозначения:
не А, Ā, not A, ¬А, !A
Результат операции отрицания НЕ определяется следующей таблицей истинности:
A не А
0 1
1 0

Результат операции отрицания истинен, когда исходное высказывание ложно, и наоборот.

Операция ИЛИ - логическое сложение (дизъюнкция, объединение)

Логическая операция ИЛИ выполняет функцию объединения двух высказываний, в качестве которых может быть и простое, и сложное логическое выражение. Высказывания, являющиеся исходными для логической операции, называют аргументами. Результатом операции ИЛИ является выражение, которое будет истинным тогда и только тогда, когда истинно будет хотя бы одно из исходных выражений.
Применяемые обозначения: А или В, А V В, A or B, A||B.
Результат операции ИЛИ определяется следующей таблицей истинности:
Результат операции ИЛИ истинен, когда истинно А, либо истинно В, либо истинно и А и В одновременно, и ложен тогда, когда аргументы А и В - ложны.

Операция И - логическое умножение (конъюнкция)

Логическая операция И выполняет функцию пересечения двух высказываний (аргументов), в качестве которых может быть и простое, и сложное логическое выражение. Результатом операции И является выражение, которое будет истинным тогда и только тогда, когда истинны оба исходных выражения.
Применяемые обозначения: А и В, А Λ В, A & B, A and B.
Результат операции И определяется следующей таблицей истинности:
A B А и B
0 0 0
0 1 0
1 0 0
1 1 1

Результат операции И истинен тогда и только тогда, когда истинны одновременно высказывания А и В, и ложен во всех остальных случаях.

Операция «ЕСЛИ-ТО» - логическое следование (импликация)

Эта операция связывает два простых логических выражения, из которых первое является условием, а второе - следствием из этого условия.
Применяемые обозначения:
если А, то В; А влечет В; if A then В; А→ В.
Таблица истинности:
A B А → B
0 0 1
0 1 1
1 0 0
1 1 1

Результат операции следования (импликации) ложен только тогда, когда предпосылка А истинна, а заключение В (следствие) ложно.

Операция «А тогда и только тогда, когда В» (эквивалентность, равнозначность)

Применяемое обозначение: А ↔ В, А ~ В.
Таблица истинности:
A B А↔B
0 0 1
0 1 0
1 0 0
1 1 1

Операция «Сложение по модулю 2» (XOR, исключающее или, строгая дизъюнкция)

Применяемое обозначение: А XOR В, А ⊕ В.
Таблица истинности:
A B А⊕B
0 0 0
0 1 1
1 0 1
1 1 0

Результат операции эквивалентность истинен только тогда, когда А и В одновременно истинны или одновременно ложны.

Приоритет логических операций

  • Действия в скобках
  • Инверсия
  • Конъюнкция (&)
  • Дизъюнкция (V), Исключающее ИЛИ (XOR), сумма по модулю 2
  • Импликация (→)
  • Эквивалентность (↔)

Совершенная дизъюнктивная нормальная форма

Совершенная дизъюнктивная нормальная форма формулы (СДНФ) это равносильная ей формула, представляющая собой дизъюнкцию элементарных конъюнкций, обладающая свойствами:
  1. Каждое логическое слагаемое формулы содержит все переменные, входящие в функцию F(x 1 ,x 2 ,...x n).
  2. Все логические слагаемые формулы различны.
  3. Ни одно логическое слагаемое не содержит переменную и её отрицание.
  4. Ни одно логическое слагаемое формулы не содержит одну и ту же переменную дважды.
СДНФ можно получить или с помощью таблиц истинности или с помощью равносильных преобразований.
Для каждой функции СДНФ и СКНФ определены единственным образом с точностью до перестановки.

Совершенная конъюнктивная нормальная форма

Совершенная конъюнктивная нормальная форма формулы (СКНФ) это равносильная ей формула, представляющая собой конъюнкцию элементарных дизъюнкций, удовлетворяющая свойствам:
  1. Все элементарные дизъюнкции содержат все переменные, входящие в функцию F(x 1 ,x 2 ,...x n).
  2. Все элементарные дизъюнкции различны.
  3. Каждая элементарная дизъюнкция содержит переменную один раз.
  4. Ни одна элементарная дизъюнкция не содержит переменную и её отрицание.

Часто, для того чтобы продемонстрировать ограниченные возможности однослойных персептронов при решении задач прибегают к рассмотрению так называемой проблемы XOR – исключающего ИЛИ .

Суть задачи заключаются в следующем. Дана логическая функция XOR – исключающее ИЛИ. Это функция от двух аргументов, каждый из которых может быть нулем или единицей. Она принимает значение , когда один из аргументов равен единице, но не оба, иначе . Проблему можно проиллюстрировать с помощью однослойной однонейронной системы с двумя входами, показанной на рисунке ниже.

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

Точки Значение Значение Требуемый выход
0 0 0
1 0 1
0 1 1
1 1 0

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

Однако функция XOR легко формируется уже двухслойной сетью, причем многими способами. Рассмотрим один из таких способов. Модернизуем сеть на рисунке, добавив еще один скрытый слой нейронов:

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

Тогда результат работы такой нейронной сети можно представить в виде следующей таблицы:

Точки Значение Значение Требуемый выход
0 0 0 0 0 0
1 0 1 1 0 1
0 1 1 0 1 1
1 1 0 0 0 0

Каждый из двух нейрон первого слоя формирует решающую поверхность в виде произвольной прямой (делит плоскость на две полуплоскости), а нейрон выходного слоя объединяет эти два решения, образуя решающую поверхность в виде полосы, образованной параллельными прямыми нейронов первого слоя:

Нейронная сеть, используемая в этой статье для решения задачи XOR, примитивна и не использует всех возможностей многослойных сетей. Очевидно, что многослойные нейронные сети обладают большей представляющей мощностью, чем однослойные, только в случае присутствия нелинейности. А в данной сети применена пороговая линейная функция активации. Такую сеть нельзя будет обучить, например, применив алгоритм обратного распространения ошибки.