- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Округление обратного и дополнительного кодов положительного числа
Во всех режимах округления обратный и дополнительный код положительных чисел округляется по правилам округления прямого кода положительных чисел, поскольку их представление во всех трех кодах совпадает.
Округление обратного кода отрицательного числа
Признак ситуации потери точности – цифра не обратная нулю хотя бы в одном отбрасываемом разряде.
Если при заданном методе округления из двух ближайших чисел должно быть выбрано ближайшее к нулю, то сохраняемые разряды исходного кода содержат код результата округления.
Если при заданном методе округления из двух ближайших чисел должно быть выбрано отстоящее дальше от нуля, то код результата округления равен укороченному исходному коду, уменьшенному на 1 младшего разряда формата результата. Его можно получить вычитанием из сокращенного кода +1 младшего разряда или сложением сокращенного кода с обратным кодом отрицательной единицы в младшем разряде. Оби операции следует выполнять по правилам их выполнения в обратном коде (раздел 4.3).
Пример 3-14. Выполнено округление обратного кода отрицательных чисел к нулю и от нуля с сокращением двух младших разрядов. В вариантах A-D обратные коды десятичных чисел, а в вариантах E-H – двоичных. В круглых скобках даны значения закодированных чисел в соответствующей системе счисления. Сокращаемые разряды исходного кода числа Nт зачеркнуты. В строке N1 приведены результаты округления со смещением числа к нулю, а в строке N2 – от нуля. Обратные коды в строке N1 получены отбрасыванием сокращаемых разрядов исходного кода, а в строке N2 – вычитанием 1 из сокращенного обратного кода строки N1.
В вариантах A и E числа принадлежат середине диапазона отрицательных чисел представляемых в исходном формате.
В вариантах B и F исходные числа принадлежат отрицательной области полной потери значимости (рис.3-5). Результат округления к нулю – обратный код машинного нуля. Сложилась исключительная ситуация машинный ноль. Ее признак – наличие цифр обратных нулю во всех разрядах исходного укороченного обратного кода.
Округление числа в направлении от нуля смещает число на числовой оси влево, что приводит к переходу его через нижнюю границу диапазона представляемых чисел. Результат округления от нуля – обратный код максимального отрицательного числа не равного нулю. При округлении от нуля ситуация машинный ноль сложиться не может, так как любое число не равное нулю и принадлежащее области полной потери значимости при округлении от нуля смещается в область чисел представимых в формате с сокращенными младшими разрядами.
В вариантах A и E числа принадлежат середине диапазона отрицательных чисел представляемых в исходном формате.
В
A B С D NT:
1|245|00 N1:
1|245|00об
(-754,99)
1|999|99
об (-0,00)
1|990|00
об
(-9,99)
1|000|00
об (-999,99)
-
1 -
1 -
1 -
1 N2:
1|244|99об (-755,00)
1|999|98
об (-0,01)
1|989|99
об (-10,00)
1|8999|99 об
(-1000)
E F G H NT:1|010|00 N1:
1|010|00
об
(-101,11)
1|111|11
об
(-0) 1|110|00
об
(-1,11)
1|000|00 об (-111,11)
-
1 -
1 -
1 -
1 N2:
1|001|11
об
(-110,00)
1|111|10
об
(-0,01)
1|101|11
об
(-10,00)
1|0111|11
об
(-1000,00)79об
(-754,992) 1|999|9979об
(-0,002) 1|990|0079об
(-9,992) 1|000|0079об
(-999,992)01об
(-101,111)
1|111|1101об
(-0,001) 1|110|0001об
(-1,111) 1|000|0001об
(-111,111)
Округление числа в направлении от нуля смещает число на числовой оси влево, что приводит к переходу его через нижнюю границу диапазона представляемых чисел. Результат округления от нуля – обратный код максимального отрицательного числа не равного нулю. При округлении от нуля ситуация машинный ноль сложиться не может, так как любое число не равное нулю и принадлежащее области полной потери значимости при округлении от нуля смещается в область чисел представимых в формате с сокращенными младшими разрядами.
Варианты C,D и G,H иллюстрируют, что код числа смещенного от нуля (N2) может иметь в поле целого на один значащий разряд больше, чем в поле целого исходного кода. В обратном коде не значащими являются старшие разряды содержащие цифру обратную нулю. Увеличение количества значащих разрядов может приводить к переходу числа через границы областей чисел представимых в формате результата записи и быть причиной исключительной ситуации переполнение или, напротив, исключать ситуацию потери значимости. Признак увеличения количества значащих разрядов в коде, смещенном от нуля, – наличие цепочки нулей в младших разрядах укороченного обратного исходного кода.
Если при заданном методе округления из двух ближайших чисел должно быть выбрано ближайшее к нулю, то признаки исключительных ситуаций при записи обратного кода отрицательного числа в формат результата следующие.
Ситуация переполнения может сложиться, если поле целого в формате результата меньше чем в исходном формате. Ее признак – наличие цифры не обратной нулю в сокращаемых разрядах целого.
Ситуация потери значимости складывается, если
поле целого в формате результата больше чем в исходном формате;
поля целого в форматах совпадают, и старший разряд в исходном формате содержит цифру обратную нулю;
поле целого в формате результата меньше чем в исходном, нет переполнения формата и старший разряд, копируемый в формат результата, содержит цифру обратную нулю.
Ситуация машинный ноль может сложиться при любой длине формата результата. Ее признак – наличие цифр обратных нулю во всех разрядах исходного кода кроме разрядов, отбрасываемых при округлении. Машинный ноль имеет знак исходного кода.
Если при заданном методе округления из двух ближайших чисел должно быть выбрано отстоящего дальше от нуля, то признаки исключительных ситуаций при записи обратного кода отрицательного числа в формат результата следующие.
Ситуация переполнения может сложиться, если поле целого в формате результата не больше чем в исходном формате. Ее признак – отсутствие цифры обратной нулю в сокращаемых разрядах целого или наличие нулей во всех разрядах исходного кода копируемых в формат результата.
Ситуация потери значимости складывается, если
поле целого формата результата превышает поле целого исходного формата более чем на 1 разряд;
поле целого формата результата превышает поле целого исходного формата на 1 разряд и в сохраняемых разрядах исходного кода есть цифра не равная нулю;
поле целого в формате результата не больше чем в исходном формате, нет переполнения формата, разряд исходного формата соответствующий старшему разряду формата результата содержит цифру обратную нулю и в остальных сохраняемых разрядах исходного кода есть цифра не равная нулю.
Ситуация машинный ноль сложиться не может.
