
- •Введение
- •Лекция 0 Кванторы и символы математической логики
- •Лекция 1 Множества
- •Способы задания множеств
- •Подмножества
- •Особые множества
- •Мощность множества
- •Лекция 2 Операции над множествами
- •Диаграммы Эйлера-Венна
- •Объединение множеств
- •Пересечение множеств
- •Разность множеств
- •Дополнение множества
- •Симметрическая разность
- •Основные законы алгебры множеств
- •Приоритеты операций над множествами
- •Покрытие и разбиение множества
- •Лекция 3 Кортеж
- •Декартово произведение множеств
- •Лекция 4. Соответствие. Отображение. Функция. Соответствие
- •Отображение
- •Функция
- •Лекция 5 Отношения
- •Одноместные отношения
- •Бинарные отношения
- •Лекция 6 Специальные типы отношений
- •Отношение эквивалентности
- •Отношение порядка
- •Отношение доминирования
- •Отношение толерантности
- •Функциональное отношение
- •Лекция 7 Системы счисления
- •Лекция 8 Основы знаковой арифметики
- •Лекция 9 Алгебра высказываний
- •Лекция 10 Булевы функции
- •Аксиомы и законы алгебры логики
- •Лекция 11 Аналитическое представление функций алгебры логики
- •Дизъюнктивная нормальная форма (днф)
- •Конъюнктивная нормальная форма (днф)
- •Лекция 12 Минимизация булевых функций с помощью аналитических преобразований
Лекция 8 Основы знаковой арифметики
Сложение и вычитание беззнаковых чисел
Во всех позиционных системах счисления данные операции делаются аналогично операциям в десятичной системе счисления. При сложении чисел могут возникать переносы в старшие разряды, а при вычитании – заемы из старших разрядов.
Прямой код
Прямой код (ПК) используется для представления знаковых чисел. При этом старший разряд числа является знаковым (0 – «+», 1 – «-»), а оставшиеся разряды – значащими (модулем числа). Например: +142 = 0.1110, –142 = 1.1110.
ПК наиболее удобен для хранения чисел, поскольку не представляет сложностей для понимания чисел, их печати, сортировки и т.п. Однако выполнения арифметических операций над числами в ПК оказывается достаточно трудоемким.
Рассмотрим выполнение операции сложения чисел в ПК. Алгоритм сложения имеет следующий вид.
В начале проверяется равенство знаков слагаемых. При их равенстве выполняется сложение модулей чисел, и результату присваивается знак одного из операндов. Если при сложении модулей возникает перенос из старшего разряда, то имеет место переполнение, и результат является ошибочным.
Если знаки слагаемых не равны, для определения результата необходимо из большего модуля числа вычесть меньший модуль числа, и результату присвоить знак большего по модулю числа. Отметим, что при сложении чисел с разными знаками переполнение невозможно.
Таким образом, при сложении чисел в ПК признаком переполнения является наличие переноса из старшего разряда при сложении модулей чисел.
Дополнительный код
Формируется из числа в прямом коде и позволяет выполнять сложение чисел по более простой схеме по сравнению с прямым кодом.
Перевод чисел из ПК в ДК выполняется по следующим правилам:
Положительное число в ДК такое же, как и в ПК.
Если число отрицательное, то для перевода его в ДК нужно знак сохранить, а модуль числа инвертировать и прибавить единицу.
Например.
0.1010ПК = 0.1010ДК = 1010.
1.1011ПК = 1.0101ДК = –1110.
Отметим, что в ПК число 1.0000 означает то же, что и 0.0000. В дополнительном коде число 1.0000 означает число –1610 и является корректным с точки зрения ДК.
Рассмотрим выполнение операции сложения чисел в ДК.
Считая, что оба операнда уже заданы в ДК, выполняется их суммирование, после чего сравниваются переносы из знакового (старшего) и в знаковый разряд. Переполнение результата имеет место при неравенстве переносов. В случае переполнения результат считается неверным.
Преимущества алгоритма сложения чисел в ДК по сравнению с ДК заключаются в следующем.
Знаки операндов участвуют в операции сложения наравне со значащими разрядами. Это приводит к тому, что знак результата формируется автоматически, без дополнительных проверок.
Алгоритм сложения в ПК использует операцию двоичного вычитания, которая крайне сложно реализуется с помощью электронной аппаратуры в связи с использованием заемов. В тоже время операция двоичного сложения реализуется сравнительно просто.
Доступный диапазон чисел в ДК на одно число больше, чем в ПК (при одинаковой разрядности операндов).
Вычитание чисел со знаком
Вычитание сводится к сложению, при этом вычитаемое предварительно умножается на минус единицу: A – B = A + (-B).
Для того, что число в ПК умножить на (-1), достаточно инвертировать знак числа.
Для того, чтобы число в ДК умножить на (-1), нужно инвертировать все разряды числа (включая знаковый), и к полученному значению прибавить единицу.
После этого выполняется сложение чисел согласно ранее рассмотренным алгоритмам.