Логические основы построения и работы компьютеров

Есипов Александр Сергеевич

ЛОГИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ И РАБОТЫ КОМПЬЮТЕРОВ

Журнал продолжает знакомить читателей с готовящимися к изданию учебниками по информатике.

В этом номере мы представляем учебник А.С. Есипова «Информатика и вычислительная техника». Учебник прошел многолетнюю апробацию в школах Ленинградской области и отражает, с нашей точки зрения, «классический» подход к преподаванию информатики. Учебник соответствует рекомендованной Министерством Образования Российской Федерации программе курса информатики для Х-Х1 классов объемом в 136 часов.

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

1. ОБЩИЕ СВЕДЕНИЯ

О ДВОИЧНЫХ АЛГЕБРАХ.

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

Чтобы задать алгебру, нужно задать некоторое множество элементов (переменных и констант) и определяемое на них некоторое множество операций. Кроме этого требуется задать алфавит алгебры, правила записи и преобразования формул.

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

Заметим, что набор операций школьной алгебры избыточен. Например, воз-

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

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

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

цию в двоичной системе счисления. Во-вторых, они служат математической основой решения сложных логических задач.

2. ДВОИЧНЫЕ ПЕРЕМЕННЫЕ

И ФУНКЦИИ.

Двоичными называют переменные, способные принимать только два значения: 0 и 1. Двоичные функции - это функции двоичных переменных. Они также принимают только два значения - 0 и 1. Двоичные переменные и функции называют булевыми переменными и булевыми функциями (БФ).

Область определения БФ п аргументов составляют:

при п = 1 - значения 0 и 1 этого аргумента (21 = 2);

при п = 2 - наборы 00, 01, 10 и 11 - 4 набора значений аргументов (22 = 4); при п = 3 - наборы 000, 001, 010, 011, 100, 101, 110 и 111 - 8 наборов (23 = 8) и т.д.

Можно сделать вывод, что область определения БФ п аргументов состоит из 2п наборов. Область значений БФ - это множество всего из двух значений 0 и 1.

Конечность области определения и области значений БФ позволяют задавать эти функции не только формулами, но и таблично. В виде таблицы БФ задают значениями 0 или 1 на каждом из наборов значений ее аргументов. Такие таблицы называют таблицами истинности (в алгебре логики в таких таблицах, вместо 0, пишут «Л» - ложь, вместо 1, пишут «И» - истина).

Таблица 1 представляет собой пример таблицы истинности функций £т(хрх2) и £13(хрх2) двух аргументов (хх и х2).

Величина а обозначает номер набора значений аргументов, т - номер функции.

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

а х1х2 £т

0 00 £(0,0) 1

1 01 £(0,1) 1

2 10 £(1,0) 0

3 11 £(1,1) 1

Функция ^(ХрХ^ - это задание в общем виде любой из 16-ти функций двух аргументов, £т(0,0) - значение функции при подстановке в ее формулу значений хх =0 и х2 =0, то есть на нулевом наборе аргументов, £т(0,1) - значение функции на первом наборе аргументов и так далее.

Значения булевой функции на всех наборах своих аргументов образуют двоичное число, называемое кодом функции. Перевод кода функции в десятичную систему дает номер функции. В таблице 1 записана функция £13(хрх2), с кодом 1101 и номером 13.

С ростом числа аргументов п число различных функций резко возрастает. Если число наборов определяется формулой Кн = 2п, то число функций вычисляется по формуле Кф = 2Кн = 22п: при п = 1 Кн = 2, Кф = 4; при п = 2 Кн = 4, Кф = 16; при п = 4 Кн = 16, Кф > 65000

при п = 10 Кф сравнимо с числом элементарных частиц во Вселенной.

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

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

3. БУЛЕВЫ ФУНКЦИИ ОДНОГО

АРГУМЕНТА. ИНВЕРСИЯ. ИНВЕРТОР.

Все четыре функции на двух наборах одного аргумента показаны в таблице 2.

Таблица 2.

х £0

0 0 0 1 1

1 0 1 0 1

Функция £0(х) называется константа нуль. Она независимо от значений аргумента равна нулю.

—

Рисунок 1. Условное обозначение инвертора.

Функция f3(x) называется константа единица. Она независимо от значений аргумента равна единице.

Функция fx(x) - это переменная х. Она повторяет значения переменной.

Функция f2(x) называется инверсия (отрицание х). Она входит в базис булевой алгебры и алгебры логики. Рассмотрим ее подробнее.

Инверсия - функция одного аргумента. Логическая операция над аргументом - отрицание. Часто отождествляют функцию с операцией и говорят: функция отрицание или операция инверсия.

Знак операции - черта над аргументом (x ) или значок — перед аргументом (—ix). Такая запись читается: «НЕ х» или «отрицание х». В языках программирования также широко используются логические операции, реализующие булевы функции. Функция инверсия аргумента х записывается так: NOT x.

Функцию инверсия в схемах компьютера реализует логический элемент инвертор (элемент «НЕ»). Схема инвертора показана на рисунке 1. Работает инвертор так: если на входе 0, то на выходе 1, если на входе 1, то на выходе 0.

4. БУЛЕВЫ ФУНКЦИИ

ДВУХ АРГУМЕНТОВ.

Двум аргументам соответствуют четыре набора их значений, что приводит к шестнадцати различным кодам функций (n = 2, К = 2n = 4, Кф = 2Кн = 16). Все 16

функций двух аргументов записаны в таблице 3.

Среди функций двух аргументов имеются уже знакомые по функциям одного аргумента:

f0 и f15- соответственно функция константа 0 и ее инверсия - константа 1; f3 и fi2- переменная х^ и ее инверсия x1; fs и fio - переменная х2 и ее инверсия x2.

Функции f0 и f15 фиктивно зависят от обоих аргументов - изменения значений аргументов не влияют на значения этих функций. Функции f3, f5, fio и f12 фиктивно зависят от одного аргумента и существенно зависят от другого аргумента.

Из оставшихся десяти функций также можно выделить пять пар - пять функций и их инверсий: f1 и f14, f2 и f13, f4 и f11, f6 и f9, f7 и fg. Рассмотрим их.

Конъюнкция. Булева функция f1(x1,x2) c кодом 0001 называется конъюнкцией. Конъюнкция - это такая булева функция, которая равна единице тогда и только тогда, когда все аргументы функции равны единице. Другое определение - это такая функция, которая равна нулю, если хотя бы один аргумент функции равен нулю.

Таблица истинности функции конъюнкция - таблица 4.

Таблица 4. Таблица истинности функции конъюнкция.

a X1 Х2 f1<X1X2>

0 0 0 0

1 0 1 0

2 1 0 0

3 1 1 1

Таблица 3. Булевы функции двух аргументов.

a X1X2 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f 15

0 00 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

1 01 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

2 10 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

3 11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Функции конъюнкция соответствует операция логическое умножение.

Знак операции: &, • или л (в алгебре логики). В формулах, как и в обычной алгебре, знак чаще всего опускается: f(x^ — — • — х^х^*

Читается формула так: «xx и x2»* Запись в языках программирования: x1 AND x2*

Функцию конъюнкция реализует логический элемент коньюнктор (элемент «И»)* Условное обозначение коньюнктора в логических схемах показано на рисунке 2.

& Рисунок 2.

x1 Условное обозначение

x1x2 логического элемента

x2 конъюнктор.

Используя принцип суперпозиции (подстановку функции в качестве аргументов в другую функцию), функция конъюнкция обобщается на п аргументов:

£(х1,х2,...,хп) = хх & х2 & ... & хп. В качестве содержательного примера реализации функции конъюнкция рассмотрим схему голосования «только все!». На рисунке 3 показана цепь с N кнопками, позволяющими включать индикаторную лампочку. На электрических выключателях принято отмечать: «0» - выключено и «1» - включено. Лампочка засветится только в случае, если будут замкнуты все ключи, то есть на все N входов будут «поданы» единицы. Такая схема реализует функцию конъюнкция.

Рисунок 3. Реализация функции конъюнкции в схеме голосования «только все».

Kn

щ-

К1 К0

Дизъюнкция. Булева функция £7(хрх2) с кодом функции 0111 называется дизъюнкцией. Дизъюнкция - это такая двоичная функция, которая равна нулю тогда и только тогда, когда все аргументы функции равны нулю. Другое определение: дизъюнкция - это такая функция, ко-

торая равна единице, если хотя бы один аргумент равен единице.

Таблица истинности функции дизъюнкция - таблица 5.

Таблица 5. Таблица истинности функции дизъюнкция.

a xi x2 f1

0 0 0 0

1 0 1 1

2 1 0 1

3 1 1 1

Фу нкции дизъюнкция соответствует операция логическое сложение.

Знак операции: V. Пример записи формулы функции дизъюнкция: £(хрх2) = х^ х2.

Читается формула так: «хх или х2». Запись на языках программирования: хх ОЯ х2.

Функцию дизъюнкция реализует логический элемент дизъюнктор (элемент «ИЛИ»). Условное обозначение дизъюнк-тора показано на рисунке 4.

1

x1

x1 V x2

x2

Рисунок 4* Условное обозначение логического элемента конъюнктор.

Функция дизъюнкция обобщается на п аргументов:

£(х1,х2,...,хп) = х1 V х2 V...V хп.

В качестве примера реализации функции дизъюнкция рассмотрим схему голосования «хотя бы один!». На рисунке 5

<8Н

Рисунок 5. Реализация функции дизъюнкция в схеме голосования «хотя бы один».

показана цепь с N кнопками, позволяющими включать индикаторную лампочку. Лампочка засветится в случае, если будет замкнут хотя бы один ключ, то есть схема реализует функцию дизъюнкция.

Инверсия конъюнкции. Функция Шеффера. В таблице истинности функций двух аргументов (таблица 3) эта функция 114(ХрХ2). Она имеет код функции 1110.

Запись формулы функции следующая:

^Х1, Х2) — Х1 Х2 — Х1 " Х2 — Х1Х2

Инверсия конъюнкции, как видно из ее формулы, образована из двух более простых функций: конъюнкции и инверсии. Эта функция замечательна тем, что она в единственном числе образует базис алгебры - алгебры Шеффера, позволяющей записать в виде формулы любую двоичную логическую функцию.

В алгебре Шеффера единственная функция - функция Шеффера. Знак операции: «I»- штрих Шеффера. В алгебре Шеффера функция инверсия конъюнкции записывается так: 1(ХрХ2) = Хх I Х2.

Логический элемент, реализующий функцию Шеффера, называется элементом Шеффера или элементом «И-НЕ». Условное обозначение элемента И-НЕ показано на рисунке 6.

&

x1 С

x2

Рисунок 6. Условное обозначение логического элемента И-НЕ.

Функция Шеффера также обобщается на п аргументов.

Инверсия дизъюнкции. Функция

Пирса. В таблице 2 она под номером 8 и имеет код функции 1000. Это функция

^8(Х1,Х2) — Х1 У Х2

Функцию инверсия дизъюнкции еще

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

операции: <Д» - стрелка Пирса. Запись функции Пирса: 1(ХрХ2) = Х^ Х2.

Логический элемент, реализующий функцию Пирса, называют элементом Пирса или элементом ИЛИ-НЕ. Условное обозначение элемента на рисунке 7.

1

О

x, V x2

Рисунок 7.

Условное обозначение логического элемента ИЛИ-НЕ.

Импликация. Это логическая функция двух двоичных логических переменных хх и Х2. Различают импликацию от хх к х2 (функция 1"13 с кодом 1101) и импликацию от х2 к хх (функция 1И с кодом 1011). Обе эти функции приведены в таблице 6. Операцию, соответствующую функции импликация, также называют импликацией и обозначают стрелкой от одной логической переменной к другой.

Таблица 6. Функция импликация.

х1 х2 х1 х2 х1 х2

0 0 1 1

0 1 1 0

1 0 0 1

1 1 1 1

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

Запись формул функций импликация в булевой алгебре и в алгебре логики следующая:

f13(x1,x2) = x1 V = x1  x2;

f11(x1,x2) = x1 V x2 = x2  x1.

Логическая операция IMP (импликация) используется в языках программирования. Запись следующая: х1 IMP x2.

Неравнозначность. Эту логическую функцию двух аргументов еще называют «исключительным ИЛИ», а также «суммой по модулю 2». Код функции - 0110, номер - 6 в таблице 3. Функция принимает единичное значение только на тех наборах значений двух аргументов, на ко-

торых эти значения различны (01 и 10). Функции неравнозначность соответствует логическая операция сумма по модулю 2. Операция входит в базис алгебры Жегал-кина и имеет знак операции: ©. Записи формулы функции неравнозначность в булевой алгебре, алгебре Жегалкина и в языках программирования следующие:

1*9 (^1, Х-2 ) — Х1Х2 V Х1Х^ ,

^6(Х1'Х2) = Х1  Х2'

х1 ХОЯ Х2.

Равнозначность. Является отрицанием неравнозначности. Функция равнозначность (код функции 1001, номер функции 9) принимает значение 1 только на наборах с одинаковыми значениями аргументов (00 и 11). В качестве операции двойной импликации включается в базис алгебры логики (знак операции: «). Функцию равнозначность также называют эквивалентностью. Запись формулы функции в булевой алгебре, алгебре логики и в языках программирования следующая:

£9(Х1 ,Х2) = Х1«Х2, (Х1, Х2) — Х1 «« Х2 ,

хх БОУ х2.

Функции запрета. Это функции и 1 Они являются отрицанием к функциям импликации. Широко использовались при проектировании и описании работы логических элементов ЭВМ 1-го и 2-го поколений.

5. АЛГЕБРЫ.

СРАВНЕНИЕ ПО НАБОРУ ОПЕРАЦИЙ.

Из перечисленных в таблице 7 двоичных алгебр широко используются на

практике только две - алгебра Буля и алгебра логики. Алгебры Шеффера и Пирса активно изучались на предмет возможности построения компьютера из однотипных элементов. К тому же, ввиду технологических особенностей, наиболее просто реализуются именно логические элементы Шеффера (И-НЕ) и Пирса (ИЛИ-НЕ).

6. БУЛЕВА АЛГЕБРА.

ОСНОВНЫЕ ЗАКОНЫ И ТОЖДЕСТВА.

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

1. ХУ = УХ переместительный закон ХуУ = У уХ

2. X

3. X(YvZ) = XYvXZ распределительный XvYZ = (XvY)(XvZ) закон

4. XX = X тавтология XvX = X

5. Х1 = X правила выполнения Xv0 = X операций над константами Х0 = 0

Xv1 = 1

6. XX — 0 законы инверсии для X v X — 1 конъюнкции и дизъюнкции

7. X • У — X v У правила де Моргана

Х^у — X • У

Таблица 7. «Школьная» и двоичные алгебры.

Алгебра Множество переменных и констант Базис алгебры

Школьная Булева Шеффера Пирса Жегалкина Алгебра логики вещественные числа наборы из нулей и единиц — « - — « -— « -— « - +, -, *, /, л/_, возведен. в степень &, V, 0 | — штрих Шеффера X — стрелка Пирса & , ©, 1 &, V, 0, «

8. ХУ V ХУ — X правила склеивания (X V У)(Х V У) — X

9. X V ХУ — X правила поглощения Х(Х V У) — X

10. X — X правило двойной инверсии

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

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

Первый способ. Первая строка распределительного закона не вызывает сомнений. Докажем справедливость второй строки:

XvYZ =

Правую часть равенства преобразуем к виду левой части. Справа будем записывать используемые при преобразовании законы и правила: (XvY)(XvZ) = (раскрываем скобки

XXvXYvXZvYZ = XX = X)

XvXYvXZvYZ = (выносим X за скобки) X(1vYvZ)vYZ = (используем XV1 = 1) XvYZ

Справедливость тождества доказана.

Второй способ. Докажем справедливость правила де Моргана. Словами его

можно сформулировать так: 1) инверсия конъюнкции равна дизъюнкции инверсий и 2) инверсия дизъюнкции равна конъюнкции инверсий. Докажем первую часть правила:

X V У — X • У . Для доказательства используем таблицу 8, строки которой соответствуют наборам значений аргументов X и У.

Таблица 8.

ХУ ХУ X V У

0 0 0-0 — 0 — 1 0 V 0 — 1 V 1 — 1

0 1 0-1 — 0 — 1 0 VI — 1V 0 — 1

1 0 1-0 — 0 — 1 IV 0 — 0 V 1 — 1

1 1 1-1 — 1 = 0 1 V 1 — 0 V 0 = 0

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

7. КАНОНИЧЕСКИЕ ФОРМЫ БУЛЕВЫХ ФУНКЦИЙ И ПЕРЕХОДЫ ОТ ОДНОГО СПОСОБА ЗАДАНИЯ К ДРУГОМУ.

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

Одна и та же функция может быть задана множеством различных формул. Поэтому функции трудно сравнивать. Канонические формы - это запись функций по единым правилам. Такие формы еще называют совершенными. Различают дизъюнктивную и конъюнктивную совершенные нормальные формы. Определим дизъюнктивную форму (пока не совершенную).

Дизъюнктивной нормальной формой (ДНФ) булевой функции называют дизъюнкцию конъюнкций (логическую сумму логических произведений). Формула функции в ДНФ не имеет скобок и общих для нескольких аргументов отрицаний. Пример ДНФ функции: Б(Х, У^) — X V УЪ V XZ V XУZ . Для определения совершенной ДНФ (СДНФ) рассмотрим полную (все аргументы) конъюнкцию отрицаемых или неотри-цаемых аргументов. Обозначают - К(а),

где а — номер того единственного набора, на котором К(а) = 1.

Пример: К(5) — XУZ . К(5) равна 1 только на 5-м наборе значений аргументов (101).

Совершенной дизъюнктивной нормальной формой (СДНФ) функции называют дизъюнкцию полных конъюнкций, равных единице на тех же наборах, что и функция.

7.2. Переход от таблицы истинности функции к СДНФ.

Пусть заданы две булевы функции 3-х аргументов таблицей истинности (таблица 9). Функцию Р(Х,У^) запишем в СДНФ. Функцию используем

для следующих построений.

Таблица 9.

а XУZ Р^Д^) W

0 0 0 0 0 0

1 0 0 1 1 1

2 0 1 0 1 0

3 0 1 1 0 1

4 1 0 0 1 0

5 1 0 1 0 1

6 1 1 0 0 1

7 1 1 1 1 0

По определению СДНФ выпишем из таблицы полные конъюнкции для наборов, на которых функция Б равна 1: Б = К(1,2,4,7) = К( 1^(2^(4^(7) = XYZ v XYZ v XУZ v XУZ 0 0 1 0 1 0 1 0 0 = Х • у • Z v X • у • Z v X • у • Z v X • у • Z

{

XYZ "1 1 1 1 }

Правило перехода от таблицы к формуле функции в СДНФ следующее.

Для перехода нужно записать дизъюнкцию полных конъюнкций по числу единиц в коде функции (в примере — 4 единицы), подписать под ними наборы, на которых функция равна единице, и поставить отрицания аргументов, соответствующих нулям в этих наборах.

7.3. Переход от схемы

к формуле функции.

Переход от логической схемы (Л С), построенной из логических элементов к формуле булевой функции требует знания булевых функций, реализуемых логическими элементами. Начиная от входов ЛС, используя принцип суперпозиции (подстановки функций в качестве аргументов в другие функции), получаем на выходе функцию, реализуемую всей ЛС. Рассмотрим этот переход на примере ЛС, показанной на рисунке 8.

7.4. Переход от формулы

к СДНФ и таблице истинности.

Такой переход можно сделать, выполнив следующие действия:

1. При наличии общих для нескольких переменных отрицаний, используя правило де Моргана, «опускаем» их на переменные. При наличии двойных отрицаний убираем их: _

W — ХУЬ v ХУ • Z — (X v У^ v ХУ2 = = (X v у^ v XУZ

2. Раскрываем все скобки и добавляем недостающие переменные умножением членов полученной ДНФ на скобки, равные единице:

W — Хь v Уz v XУZ —

3. Раскрываем скобки и оставляем в формуле только по одной из повторяющихся конституент (используем правило XvX = X). В результате получим СДНФ функции:

w — Xyz V X • Уz V xУz V X • Уz V xyZ =

— Xyz V XУz V xУz V XУZ

4. Осталось определить номера наборов, на которых полученные конститу-енты единицы равны единице. Это соответственно наборы: 011, 001, 101 и 110 (наборы 3, 1, 5 и 6). Записываем в таблице истинности на этих наборах 1, на остальных наборах 0. Функция W(X,Y,Z) записана в таблице 9.

7.5. Переходы «Задача - алгоритм -таблица истинности - формулы функций - логическая схема».

Постановка задачи. Построить логическую схему, суммирующую два одноразрядных двоичных числа А и В и вырабатывающую их сумму Б и перенос Р.

Алгоритм. Алгоритм сложения можно задать, например, описательно, в виде блок-схемы, другими способами. Ввиду простоты алгоритма, запишем его непосредственно таблицей истинности - таблицей работы логической схемы: Таблица истинности.

AB S P

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Формулы функций. По рассмотренным выше правилам выписываем формулы суммы и переноса:

S = AB V AB ; P = AB.

Простейший анализ формул показывает, что для построения схемы требуется два инвертора (элемента НЕ), три конъюнктора (элемента И), и один дизъ-юнктор (элемент ИЛИ). Логическая схема показана на рисунке 9.

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

8. ПРИМЕНЕНИЕ ЛОГИЧЕСКИХ

ОПЕРАЦИЙ ПРИ ПРОГРАММИРОВАНИИ.

Результаты операций отношения (знаки операций: =, <>, >, <, > =, < = ) принимают значение «истина» (TRUE), если условие выполняется и «ложь» (FALSE), если условие не выполняется. Отношения можно интерпретировать как простые высказывания, которые могут быть истинными или ложными.

С помощью логических операций AND, OR, NOT, XOR, EQV и IMP из простых отношений можно строить сложные, составные конструкции и использовать их в качестве сложных условий, например, в операторах IF-THEN-ELSE.

Программа 1 печатает результаты операций отношения величин чисел a, b и с.

Рисунок 9. Логическая схема.

Программа 1.

REM Значения результатов отношений

f2 = a < b

f3 = a < b OR b > c

f4 = a > b AND NOT (b > c) (f4 = 0) PRINT «f1=»; f1, «f2=»; f2, «f3=»; f3, «f4=»; f4 END

В качестве компонент отношений могут выступать арифметические выражения. В таких смешанных выражениях соблюдается следующая очередность выполнения операций: арифметические, отношения, логические. При этом очередность выполнения логических операций такая: NOT, AND, OR, XOR и EQV, IMP.

Рассмотрим пример использования сложного логического условия. Пусть требуется табулировать функцию, заданную графиком на рисунке 10.

Рисунок 10. График функции.

^ Y 1

?

-2 -1 0 1 2 X

Это можно сделать с помощью следующей программы:

Программа 2.

REM Табуляция функции, заданной графиком

INPUT «х =», x

IF х<-2 OR х>-1 AND x<1 OR x>2 THEN

y = 0 ELSE y = 1

PRINT «При х =»; x , «у =»; y

END

Эту же функцию можно задать так: IF x>= -2 AND x<= -1 OR x>= 1 AND x<= 2 THEN y = 1 ELSE y = 0.

9. ПРИМЕНЕНИЕ КОМПЬЮТЕРА ДЛЯ МОДЕЛИРОВАНИЯ ЛОГИЧЕСКИХ ФУНКЦИЙ.

Некоторые из рассмотренных выше задач связаны с преобразованиями формул булевых выражений, вычислением их значений на различных наборах значений аргументов. К таким задачам можно отнести доказательства справедливости основных законов и тождеств булевой алгебры, переход от произвольной формулы функции к таблице ее истинности, другие задачи. Заметим, что подобные тождественные преобразования даже неслож-

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

Программа 2 строит и заполняет таблицу истинности. Она последовательно вырабатывает все наборы значений аргументов и вычисляет значения функции на этих наборах. Программа легко дополняется для генерации наборов 4-х, 5-и и более аргументов. В рассмотренном примере программа работает с формулой функции из 7.4: _

W = XYZ v XY v Z

Программа 3.

REM Переход от формулы к таблице истинности

CLS : PRINT « x»; « у»; « z», « w»: PRINT FOR x = 0 TO 1 FOR y = 0 TO 1 FOR z = 0 TO 1

w = NOT (x AND y) AND z OR NOT

PRINT x; y; z, w

NEXT z, y, x

END

В результате работы программы будет распечатана таблица истинности функции W(x,y,z) аналогичная таблице 9.

При моделировании логических функций возможно получение в коде функций значений «-1» вместо «1» и «-2» вместо «0». Это легко изменить перед печатью результатов.

ЗАДАНИЯ

ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ.

1) В таблице истинности заданы четыре булевы функции трех переменных: fp f2, f3 и f4 (таблица 10). Для каждой из этих функций выполнить следующее:

а) перейти от таблицы истинности к записи функции в СДНФ (совершенной дизъюнктивной нормальной форме);

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

Таблица 10.

а Х1Х2Х3 12 13 14

0 0 0 0 1 0 1 1

1 0 0 1 0 1 0 1

2 0 1 0 0 0 0 0

3 0 1 1 1 1 0 0

4 1 0 0 1 1 1 1

5 1 0 1 0 0 1 1

6 1 1 0 0 1 1 0

7 1 1 1 1 0 1 1

и их отрицаний);

в) реализовать полученную запись функции логической схемой на элементах И, ИЛИ и НЕ.

2) Для заданных на рисунке 11 логических схем, реализующих булевы функции 3-х аргументов, выполнить следующие действия:

а) записать формулы реализуемых логическими схемами функций;

б) перейти от произвольной формы запи-

си формул функций к записи их в СДНФ;

в) перейти от СДНФ функций к записи их в таблице истинности;

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

3) Как было показано, любую булеву функцию можно записать в СДНФ. Это говорит о функциональной полноте буле-вого базиса (конъюнкция, дизъюнкция и инверсия). Чтобы убедиться в функциональной полноте базисов алгебр Шеффе-ра, Пирса и Жегалкина, достаточно с помощью функций, входящих в их базисы, реализовать функции булева базиса.

Например, инверсия в базисах алгебр Шеффера, Пирса и Жегалкина реализуется так: х — х| х — х ^ х — 1 © х. Реализуйте в этих базисах функции конъюнкцию и дизъюнкцию.

Рисунок 11. Логические схемы к заданию 2 самостоятельной работы.