
1. Форматы представления десятичных чисел
В настоящее время распространены два формата представления десятичных чисел в микропроцессорах - упакованный двоично-десятичный код (BCD-Binary-Coded Decimal) и неупакованный десятичный код [1].
Упакованный BCD-код - это такое представление десятичного числа, когда каждая десятичная цифра представляется 4-х битным двоичным позиционным кодом 8-4-2-1. При этом байт содержит две десятичные цифры. Младшая десятичная цифра занимает правую тетраду (биты 3 : 0), старшая - левую тетраду (биты 7 : 4). Многоразрядные BCD-числа занимают несколько смежных байт. Если число является знаковым, то для представления знака в BCD-формате отводится старшая тетрада старшего байта. Для кодирования знака можно использовать шесть двоичных кодовых комбинаций, которые не используются для представления десятичных цифр. Это коды 1010-1111 (A-F в шестнадцатеричном представлении). Обычно для кодирования знака плюс применяют код 1100 (С), а для знака минус - 1101 (D).
6) Логическая функция - это функция, в которой переменные принимают только два значения: логическая единица или логический ноль. Истинность или ложность сложных суждений представляет собой функцию истинности или ложности простых. Эту функцию называют булевой функцией суждений f (a, b).
Любая логическая функция может быть задана с помощью таблицы истинности, в левой части которой записывается набор аргументов, а в правой части - соответствующие значения логической функции. При построении таблицы истинности необходимо учитывать порядок выполнения логических операций.
Порядок выполнения логических операций в сложном логическом выражении:
инверсия;
конъюнкция;
дизъюнкция;
импликация;
эквивалентность.
Для изменения указанного порядка выполнения операций используются скобки.
Алгоритм построения таблиц истинности для сложных выражений:
Определить количество строк:
количество строк = 2n + строка для заголовка,
n - количество простых высказываний.
Определить количество столбцов:
количество столбцов = количество переменных + количество логических операций;
определить количество переменных (простых выражений);
определить количество логических операций и последовательность их выполнения.
Заполнить столбцы результатами выполнения логических операций в обозначенной последовательности с учетом таблиц истинности основных логических операций.
Пример: Составить таблицу истинности логического выражения:
D = ¬ А & (B Ú C).
Решение: Ù
Определить количество строк:
на входе три простых высказывания: А, В, С поэтому n=3 и количество строк = 23 +1 = 9.
Определить количество столбцов:
простые выражения (переменные): А, В, С;
промежуточные результаты (логические операции):
¬ А - инверсия (обозначим через E);
B Ú C - операция дизъюнкции (обозначим через F);
а также искомое окончательное значение арифметического выражения:
D = ¬ А & (B Ú C). т.е. D = E & F - это операция конъюнкции.
Заполнить столбцы с учетом таблиц истинности логических операций.
A B C E F E & F
0 0 0 1 0 0
0 0 1 1 1 1
0 1 0 1 1 1
0 1 1 1 1 1
1 0 0 0 0 0
1 0 1 0 1 0
1 1 0 0 1 0
1 1 1 0 1 0
Построение логической функции по ее таблице истинности:
Попробуем решить обратную задачу. Пусть дана таблица истинности для некоторой логической функции
Z(X,Y):
X Y Z
0 0 1
0 1 0
0 0 1
1 1 0
Составить логическую функцию для заданной таблицы истинности.
Правила построения логической функции по ее таблице истинности:
Выделить в таблице истинности те строки, в которых значение функции равно 1.
Выписать искомую формулу в виде дизъюнкции нескольких логических элементов. Число этих элементов равно числу выделенных строк.
Каждый логический элемент в этой дизъюнкции записать в виде конъюнкции аргументов функции.
Если значение какого-либо аргумента функции в соответствующей строке таблице равно 0, то этот аргумент взять с отрицанием.
Решение.
В первой и третьей строках таблицы истинности значение функции равно 1.
Так как строки две, получаем дизъюнкцию двух элементов: ( ) V ( ).
Каждый логический элемент в этой дизъюнкции запишим в виде конъюнкции аргументов функции X и Y: (X & Y) V (X & Y).
Берем аргумент с отрицанием если его значение в соответствующей строке таблицы равно 0 и получаем искомую функцию:
Z (X, Y) =(¬ X & ¬Y) V (X & ¬Y).