
- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Предмет и предназначение настоящей книги
Здесь излагаются основы не Арифметики вообще, а Арифметики современных специализированных и универсальных ЭВМ в весьма ограниченном объеме. Не рассматриваются сложные операции, вычисление часто встречающихся функций, арифметика комплексных чисел и другие практически важные вопросы. Быть может со временем этот пробел будет восполнен.
Автор преднамеренно избегает рассмотрения способов организации вычислительных процессов при выполнении арифметических преобразований. Их много. Арифметическое преобразование может быть выполнено по множеству эквивалентных по результату арифметических правил. Вычисления по каждому правилу можно организовать любым из известных способов организации вычислений. Образуется фейерверк решений. Поэтому описать все возможные варианты организации вычислений множества арифметических преобразований по всем возможным правилам невозможно. У книги не будет конца.
Здесь не рассматриваются все возможные правила какого-либо арифметического преобразования, но изложенное, как автор надеется, позволит читателю конструировать иные правила.
Книга ориентирована на конструкторов цифровых вычислителей, программистов, пользователей пакетов численных математических расчетов и студентов соответствующих специальностей. Некоторые ее разделы могут быть полезны научным работникам и специалистам, решающим соответствующие задачи.
Рекомендации читателю
Молодым и начинающим
Раздел 2 необходимо освоить в полном объеме и научиться преобразовывать быстро двоичные числа в десятичные и наоборот. Весьма рекомендую запомнить десятичные числа из ряда 2n при n = 1, 2, 3,…, 10.
В разделе 3, прежде всего, следует воспринять форматы и их свойства. Машинная арифметика это «арифметика в форматах». Ограничения, накладываемые форматами на представление чисел и выполнение операций над ними, являются причиной создания этой особой Машинной арифметики, изучить которую Вы намерены.
При первом чтении можно не изучать все рассматриваемые способы взаимного преобразования прямого и дополнительного кода. Достаточно освоить, например способ косвенного преобразования через посредство обратного кода и знать, что существуют другие. Однако тот, кто освоит способ непосредственного преобразования (раздел 3.2.1.3), будет преобразовывать коды отрицательных чисел с такой же скоростью, с какой он пишет, не выполняя в уме никаких сложений или вычитаний. Программистам следует уделить особенное внимание особенностям представления чисел в форматах в прямом и дополнительном коде, исключительным ситуациям при записи чисел в формат, способам округления чисел (разделы 3.3.1 и 3.3.2), быть может, не вдаваясь в подробности округления в разных кодах.
В разделе 4 необходимо в полном объеме освоить операции Пересылки, Изменения знака, Сложения и Вычитания (разделы 4.1 – 4.3), в том числе в двоично-десятичной системе счисления (раздел 4.7), операцию Сравнение (раздел 4.6).
При первом чтении нет необходимости глубоко вникать во все рассматриваемые способы умножения. Достаточно освоить подразделы 4.4.1, вводную часть 4.4.2 и подразделы 4.4.2.1, 4.4.2.3, 4.4.2.4, 4.4.2.6, 4.4.2.9. Остальные подразделы раздела 4.4 достаточно просмотреть, не вникая в детали, но так, чтобы понять их суть. Вполне возможно, что при выполнении курсовых и дипломных проектов, при решении реальных задач, например при программировании FPGA (Field Programmable Gate Array – программируемая пользователем вентильная матрица), Вам придется обратиться к этим подразделам для детального изучения. Программистам весьма рекомендую вникнуть в приемы Табличного умножения и Умножения многоразрядных чисел, которые зачастую приходится реализовывать программным способом при программировании микропроцессоров.
В части касающейся операции деления и вычисления остатка, при первом чтении достаточно освоить подразделы 4.5.1, 4.5.2.1, 4.5.2.2, 4.5.4. Программисты должны учитывать, что операции умножения и деления реализуют программным способом в микропроцессорных системах и эта задача – Ваша задача.
Программистам следует особое внимание уделить исключительным ситуациям при выполнении арифметических операций. Обработка всех исключительных ситуаций выполняется программным способом. Если Вы пишете программу, использующую системные обработчики прерывания, необходимо четко осознавать, что происходит при возникновении исключительных ситуаций и каковы могут быть последствия.
В разделах, как правило, приводятся многочисленные примеры. Рекомендую внимательно разобраться в вычислении одного или двух вариантов вычислений, остальные варианты выполнить самостоятельно при тех же исходных данных и сравнить с тем, как они выполнены в тексте. Это будет способствовать лучшему усваиванию Вами рассматриваемых правил.
Специалистам
Легко давать рекомендации тем, кто ничего не знает или знает мало. Гораздо сложнее это делать тем, кто знает много. Но все же, попробую.