
- •1. Представление информации в эвм
- •1.1. Общие положения
- •1.2. Цифровая форма представления информации
- •1.3. Системы счисления
- •1.3.1. Общие положения
- •1.3.2. Двоичная система счисления
- •1.3.3. Смешанные системы счисления
- •1.3.4. Таблицы сложения и умножения в двоичной системе счисления
- •1.3.5. Перевод чисел из одной системы счисления в другую
- •1.4. Способы представления чисел со знаком
- •1.4.1. Общие положения
- •1.4.2. Дополнительный код.
- •1.4.3. Обратный код
- •1.5. Формы представления числовых данных
- •1.5.1. Общие положения
- •1.5.2. Представление числовых данных с фиксированной запятой
- •1.5.3. Представление числовых данных с плавающей запятой
- •2. Представление символьной информации
- •3. Представление графической информация
- •4. Oсновы схемотехники
- •4.1. Основы математической логики
- •4.2. Логические элементы
- •4.3. Проектирование логических схем
- •4.3.1. Комбинационные схемы и конечные автоматы
- •4.3.2. Синтез комбинационных схем
- •4.4. Элементы памяти (триггеры)
- •С амыми универсальными и сложными являются jk-триггеры. Они могут строиться как со статическим, так и с динамическим управлением. Универсальный jk-триггер
- •4.5. Регистры
- •4.6. Счетчики
- •5. Арифметические основы эвм
- •5.1. Основные положения
- •5.2. Арифметические операции с плавающей запятой
- •5.3. Десятичная арифметика
- •5.4. Схемы выполнения основных операций над числами с фиксированной запятой в двоичной системе счисления
- •6. Теоретические основы проектирования устройств обработки информации
- •6.1. Микропрограммы выполнения арифметических операций
- •6.1.1. Структура арифметико-логического устройства (алу) эвм
- •6.2.1. Язык микроопераций для представления алгоритмов выполнения арифметических операций
- •7. Основы проектирования операционной части алу
- •7.1. Этапы проектирования
- •7. 2. Проектирование операционной части алу
- •7.2.1. Разработка структурной схемы операционной части алу
- •7.2.2. Разработка функциональной схемы операционной части алу
- •8. Проектирование управляющей части алу
- •8.1. Способы построения управляющей части алу
- •8.2. Проектирование управляющей части алу на основе конечных автоматов
- •8.2.1. Общие вопросы проектирования устройств управления на основе конечных автоматов
- •8.2.2. Основные этапы проектирования схем мпа
- •8.2.3. Проектирование мпа на основе автомата Мура
- •8.2.4. Проектирование мпа на основе автомата Мили
- •8.3. Проектирование микропрограммных устройств управления
- •8.3.1. Основные принципы работы микропрограммных устройств управления
- •8.3.2. Типы микропрограммных устройств управления
- •8.3.4. Кодирование поля микроопераций регистра микрокоманд
- •8.3.5. Кодирование поля адресов схемы формирования адресов микрокоманд
- •9. Глоссарий
1.4.3. Обратный код
Использование обратного кода дает еще одну возможность замены арифметического действия вычитания сложением с инверсией вычитаемого.
Кодирование чисел в обратном коде можно также получить естественным путем при помощи операции вычитания (при моделировании работы вычитающего счетчика).
Для примера рассмотрим работу двоичного счетчика при вычитании, начиная со значения 2(10):
0.010 + 2(10)
0.001 + 1(10)
0.000 + 0(10) ноль
1.111 это значение в обратном коде рассматривается как минус ноль (–0(10))
1.110 –1(10)
1.101 –2(10) и т.д.
В обратном коде определение кода отрицательной величины по коду положительной величины (приписывание отрицательного знака) производится по упрощенному правилу: каждую цифру числа (включая знак) меняют на противоположную. Так как во время счета при переходе счетчика через нулевое значение теряется одна единичка, для корректности вычислений в обратном коде требуется соответствующая компенсация. Для этой цели используется естественный перенос из старшего знакового разряда при переходе счетчика через нулевое значение.
Ниже представлены числа со знаком в обратном коде, которые можно поместить в трехразрядный регистр:
-
Положительные
Отрицательные
0.00(2)
+ 0(10)
1.00(2)
– 3
0.01(2)
+ 1(10)
1.01(2)
– 2
0.10(2)
+ 2(10)
1.10(2)
– 1
0.11(2)
+ 3(10)
1.11(2)
– 0
Двоичный обратный код полностью симметричен по отношению к множеству положительных и отрицательных чисел.
Примеры выполнения операции вычитания в обратном коде над числами
А=2(10)=0.10(2) и В=1(10)=0.01(2)
1. С=А–В=А+(–В)
0.10 +2(10)
+1.10 –1(10)
10.00 сложение
+ 1 коррекция, сложение с единицей переноса
0.01 результат 2(10)–1(10)=1(10).
2. С=В–А=В+(–А)
0.01 +1(10)
+1.01 –2(10)
1.10 результат 1(10)–2(10)=–1(10)
В примере (из меньшего вычитается большее) нет коррекции, но результат верен.
3. С=В–1–1=В+(–1)+(–1). Пример эквивалентен примеру 2, но вычитание двух единиц производится в два этапа.
0.01 +1(10)
+1.10 –1(10)
1.11 –0(10) результат первого вычитания
+1.10 –1(10)
11.01 результат второго вычитания без коррекции
+ 1 коррекция, сложение с единицей переноса
1.10 результат 1(10)–2(10)=–1(10).
В приведенных примерах коррекция результата (сложение с единицей переноса) представлена в виде отдельного действия, но на практике коррекция совмещается со сложением. Просто используется суммирующее устройство с циклическим переносом с выхода старшего разряда на вход переносов младшего разряда.
Таким образом, обратный код отличается от дополнительного алгоритмом определения кода отрицательной величины по коду положительной величины и использованием сумматора с циклическим переносом., а реализация арифметических действий в обратном коде предполагает использование сумматора с циклическим переносом.
Для выявления переполнения разрядной сетки применяется модифицированный обратный код.
Модифицированный обратный код, как и дополнительный, получается простым дублированием знакового разряда.
Дополнительный и обратный коды считаются равноценными, но в реальных ЭВМ применяется преимущественно дополнительный код. В ЭВМ числа со знаком могут храниться в памяти в прямом, обратном или в дополнительном кодах, но выполнение арифметических операций, связанных с вычитанием, производится с использованием дополнительного или обратного кодов.