- •Вычислительные машины (конспект лекций) однопроцессорные эвм
- •Часть 1
- •1.1. Два класса эвм 5
- •1.1. Два класса эвм
- •1.2. Немного истории
- •1.3. Принципы действия эвм
- •1.4. Понятие о системе программного (математического) обеспечения эвм
- •1.5. Поколения эвм
- •1.6. Большие эвм общего назначения
- •1.6.1. Каналы
- •1.6.2. Интерфейс
- •1.7. Малые эвм
- •Вопросы для самопроверки
- •2. Представление информации в эвм
- •2.1. Позиционные системы счисления
- •2.2. Двоичная система счисления
- •2.2.1. Преобразование двоичных чисел в десятичные
- •2.2.2. Преобразование десятичных чисел в двоичные
- •2.2.3. Двоично-десятичная система счисления
- •2.3. Восьмеричная система счисления
- •2.4. Шестнадцатеричная система счисления
- •2.5. Двоичная арифметика
- •2.5.1. Сложение
- •2.5.2. Вычитание
- •2.5.3. Умножение
- •2.5.4. Деление
- •2.6. Прямой, обратный и дополнительный коды
- •2.6.1. Прямой код
- •2.6.2. Обратный код
- •2.6.3. Дополнительный код
- •2.6.4. Сложение и вычитание в дополнительном коде
- •2.6.5. Признак переполнения разрядной сетки
- •2.6.6. Деление в дополнительном коде
- •2.6.7. Правило перевода из дополнительного кода в десятичную систему
- •2.6.8. Модифицированные коды
- •2.6.9. Арифметика повышенной точности
- •2.7. Представление дробных чисел в эвм. Числа с фиксированной и плавающей запятой
- •2.7.1. Числа с фиксированной запятой
- •2.7.2. Числа с плавающей запятой
- •2.7.3. Сложение (вычитание) чпз
- •2.7.4. Умножение чпз
- •2.7.5. Методы ускорения умножения
- •2.7.6. Деление чисел с плавающей запятой
- •2.8. Десятичная арифметика
- •2.8.1. Сложение двоично-десятичных чисел
- •2.8.2. Вычитание модулей двоично-десятичных чисел
- •2.8.3. Умножение модулей двоично-десятичных чисел
- •2.8.4. Деление модулей двоично-десятичных чисел
- •2.9. Нарушение ограничений эвм
- •2.10. Представление буквенно-цифровой информации
- •2.11. Заключительные замечания
- •Вопросы для самопроверки
- •Контрольные задания к теме 2
- •Форма 1. Ответы на вопросы
- •Форма 2. Выполнение арифметических операций над числами
- •Пример выполнения контрольного задания (форма 2)
- •3. Принципы построения элементарного процессора
- •3.1. Операционные устройства (алу)
- •3.2. Управляющие устройства
- •3.2.1. Уу с жесткой логикой
- •3.2.2. Уу с хранимой в памяти логикой
- •3.2.2.1. Выборка и выполнение мк
- •3.2.2.3. Кодирование мк
- •3.2.2.4. Синхронизация мк
- •Вопросы для самопроверки
- •Контрольные задания к теме 3
2.8.2. Вычитание модулей двоично-десятичных чисел
По аналогии с операциями вычитания в двоичном коде операцию X-Y можно представить как X + (-Y). При этом отрицательное число представляется в дополнительном коде, аналогичном дополнительному коду в двоичной арифметике. Этот код используется только для выполнения операций вычитания. Хранятся двоично-десятичные числа (как положительные, так и отрицательные) в прямом коде со знаком.
Алгоритм выполнения операции состоит в следующем:
Модуль положительного числа представляется в прямом двоично-десятичном коде (8421).
Модуль отрицательного числа – в дополнительном коде (ДК) с избытком 6.
Для получения ДК необходимо:
- инвертировать значения разрядов всех тетрад числа;
- к младшему разряду младшей тетрады прибавить 1.
Таким образом, цепочка ПК (mod) ОКОК+1ДК аналогична цепочке в двоичной арифметике. Только здесь получается ДК с избытком 6, так как дополнение идет не до 10, а до 16.
Произвести сложение операндов (X) в ПК и (Y) в ДК.
Если при сложении тетрад возник перенос из старшей тетрады, то он отбрасывается, а результату присваивается знак "+", т.е. результат получается в прямом избыточном коде. Он корректируется по тем же правилам, что и при сложении модулей.
Если при сложении тетрад не возникает переноса из старшей тетрады, то результату присваивается знак "-", т.е. результат получается в избыточном ДК. В этом случае необходимо перейти к избыточному ПК (т.е. инвертировать все двоичные разряды двоично-десятичного числа и прибавить к младшему разряду 1).
Полученный в этом случае результат в ПК корректируется. Для этого к тем тетрадам, из которых возникал перенос при выполнении пункта 2 (при суммировании), необходимо добавить 10(10)или 1010(2). Возникшие при этом межтетрадные переносы не учитываются. Таким образом, корректировка происходит в тех тетрадах, которые в положительных числах не корректируются. Следует отметить, что при выполнении операции вычитания большего числа из меньшего (X - Y = Z, при |X||Y|), т.е. при Z0 алгоритм коррекции результата после перевода Z из ДК в ПК требует уточнения. А именно, после перевода Z в ПК необходимость коррекции определяется не только приведенными правилами, но и следующими требованиями:
а) нулевой результат не корректируется;
б) значащие нули справа в результате не корректируются;
в) если Z0 и в нем отсутствуют значащие нули справа (т.е. пп. а, б не имеют места), необходимо анализировать Y. Если в Y есть значащие нули справа, то соответствующие им разряды (тетрады) Z требуют обязательной коррекции, независимо от наличия переносов при сложении XПКи YДК.
Пример.
Z=X-Y=49(10)-238(10)=-189(10).
Представим |Y| в ДК с избытком 6:
Выполним сложение:
Отсутствие переноса из старшей тетрады является признаком того, что результат получился в ДК (т.е. отрицательный).
Перейдем к нескорректированному избыточному ПК:
Произведем коррекцию результата в соответствии с п. 5 алгоритма:
Поскольку ранее результат получался в ДК, т.е. отрицательный, необходимо добавить знак (-). Окончательный результат будет следующий:
Z= -(0001 1000 1001) = -189(10)
Пример.
Z=X-Y=143(10)-58(10)=85(10).
Представим |Y| в ДК с избытком 6:
Выполним сложение:
Наличие переноса из старшей тетрады указывает на то, что результат получился в ПК (т.е. положительный).
Произведем коррекцию результата в соответствии с п. 3 алгоритма: