
- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Операция пересылки
Операция пересылки состоит в копировании информации содержащейся одной ячейки памяти в другую ячейку без ее изменения.
Если форматы в ячейках совпадают, то выполнение операции тривиально. Если форматы не совпадают, то выполнение операции сводится к формированию задания системе Записи (раздел 3.3) и к передаче ей управления.
Система арифметических операций, контролируя операнд, может проявить ситуацию невыполнимая операция, если операнд не может быть представлен в формате результата или в системе арифметических операций не определены правила для его преобразования. Например, если операнд отрицательный, а в формате результата отсутствует поле знака, или если код операнда указывает, что число не определено, а в формате результата отсутствует соответствующий код.
Если операнд является числом, но коды его представления в форматах операнда и результата не совпадают, то система арифметических операций должна выполнить преобразование кода операнда в код результата и передать системе Записи результат точного преобразования. Например, пусть в формате результата число должно быть представлено в прямом коде, а в формате операнда записан дополнительный код варианта B минимального числа 1|000|000. В такой ситуации система выполняет преобразование дополнительного кода в прямой без изменения значения числа и передает системе Записи прямой код 1|1000|000, расширив поле целого на одну позицию в любой системе счисления.
Функции системы арифметических операций при выполнении операции пересылки могут быть расширены вплоть до выполнения преобразования чисел из одной системы счисления в другую. Для этого система должна получать типы форматов операнда и результата содержащие полную информацию о способах представления чисел. Однако в большинстве реальных систем для преобразования чисел из одной системы счисления в другую используют специальные операции, выполняемые программным или аппаратным способом.
Если форматы представления операнда и результата не совпадают, то выполнение записи в формат результата может вызывать исключительные ситуации переполнения, потери точности, потери значимости и сигнал прерывания. Исключительные ситуации не возникают, только если операция пересылки выполняется успешно без изменения значения операнда.
Операция изменения знака
Система арифметических операций, контролируя операнд, может проявить ситуации невыполнимая операция, если
операнд не является числом;
формат результата не имеет поля знака;
операнд в дополнительном коде (вариант B или C) и имеет значение (+0).
Выполнение операции изменения знака числа сводится
в прямом коде – к инвертированию знакового разряда кода;
в обратном коде – к инвертированию знакового разряда и замене цифр обратными.
В дополнительном коде правила изменения знака числа зависят от применяемого варианта кода. При изменении знака числа
Вариант кода A. Код знака числа инвертируют. Если значащие разряды содержат только 0, их значение сохраняют. Иначе вычисляют дополнение значащих разрядов кода до веса знакового разряда.
Вариант кода B. Если ситуация невыполнимая операция не складывается, код знака инвертируют; расширяют поле целого на одну позицию слева (раздел 3.3.1), и вычисляют дополнение значащих разрядов кода до веса знакового разряда. Результат передают системе Записи в формат результата. При исходном коде 1|00…0 возможна исключительная ситуация переполнения, если формат результата совпадает с форматом операнда.
Вариант кода C. Если ситуация невыполнимая операция не складывается, код знака инвертируют, и вычисляют дополнение значащих разрядов кода до веса знакового разряда.
Правило изменения знака в прямом коде очевидно. Правила изменения знака в обратном и дополнительном кодах следуют из правил преобразования прямого кода в обратный или в дополнительный код и наоборот (раздел 3.2), но не совпадают с последними. При преобразовании кодов знак сохраняется, а при изменении знака он инвертируется. В остальном, правила аналогичны.
При изменении знака дополнительного кода варианта B 1|00…0 система арифметических операций должна переслать системе Записи код 0|100…0, расширив поле целого на 1 позицию слева. Если расширение формата не допускается, то возникает исключительная ситуация переполнения. Эти правила справедливы в любой системе счисления.
Если операцию изменения знака заменить операцией вычитания операнда из нуля, полагая что
, (4-01)
то
при
возможно получение ошибочного результата.
Действительно.
Если система выполняет операцию вычитания
в дополнительном коде (вариант B
или C),
знак результата равного нулю может быть
только (+). Поэтому при
результат будет (+0), а не (–0), и этот факт
не будет обнаружен системой.
При вычитании
из нуля в обратном или прямом коде знак
результата
равного нулю зависит от того, из (+0) или
из (–0) и по какому правилу выполняется
вычитание
x.
В некоторых случаях знак нуля может не
изменяться. Подробнее описано в разделах
4.3.3, 4.3.6, 4.3.8.
Неправильное изменение знака нуля по (4-01) может быть причиной грубейших ошибок при выполнении программы на ЭВМ. Например, если после изменения знака x выполняется условный переход по знаку результата, то при ошибка в изменении знака нуля приведет к ветвлению программы в неправильном направлении со всеми вытекающими из этого последствиями.