
- •Содержание
- •Часть I. Арифметика в форматах с фиксированной точкой
- •1. Введение
- •Место и роль Арифметики цифровых вычислительных машин в современной науке
- •Предмет и предназначение настоящей книги
- •Рекомендации читателю
- •Раздел 2 достаточно просмотреть, быстро переворачивая страницы.
- •Позиционные системы счисления
- •Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления
- •Преобразование чисел из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления и наоборот
- •Представление чисел в форматах с фиксированной точкой
- •Формат с фиксированной точкой
- •Свойства формата с фиксированной точкой
- •Ограниченный диапазон представления чисел
- •Точность действительного числа в формате и точность формата
- •Значимость числа и потеря значимости
- •Эффективность использования двоичного формата
- •Представление чисел в прямом, обратном и дополнительном кодах
- •Взаимное преобразование прямого, обратного и дополнительного кодов
- •Взаимное преобразование прямого и обратного кодов отрицательных чисел
- •Взаимное преобразование обратного и дополнительного кодов отрицательных чисел
- •Взаимное преобразование прямого и дополнительного кодов отрицательных чисел
- •Запись кода числа в формат с фиксированной точкой
- •Функции системы записи и исключительные ситуации
- •Округление действительных чисел
- •Округление кодов действительных чисел с записью в формат с фиксированной точкой
- •Округление прямого кода числа
- •Округление обратного и дополнительного кодов положительного числа
- •Округление обратного кода отрицательного числа
- •Округление дополнительного кода отрицательного числа
- •Арифметические операции в форматах с фиксированной точкой
- •Операция пересылки
- •Операция изменения знака
- •Операции алгебраического сложения и вычитания
- •Сложение в дополнительном коде
- •Вычитание в дополнительном коде
- •Особенности сложения и вычитания в дополнительном коде
- •Сложение в обратном коде
- •Вычитание в обратном коде
- •Особенности сложения и вычитания в обратном коде
- •Взаимная замена операций вычитания и сложения
- •Сложение и вычитание в прямом коде
- •Операция алгебраического умножения
- •Умножение в прямом коде
- •Умножение в дополнительном коде
- •Умножение с преобразованием операндов в прямой код и произведения в дополнительный
- •Умножение дополнительного кода множимого на модуль множителя
- •Умножение дополнительного кода множимого на дополнительный код множителя
- •Умножение множимого в традиционной двоичной системе на множитель, представленный в двоичной системе счисления с алфавитом
- •Умножение дополнительных кодов с заменой знакового разряда множителя 1 на
- •Преобразование множителя с заменой цепочек единиц нулями
- •Преобразование множителя с сокращением вдвое верхней оценки количества единиц
- •Умножение на два разряда с переносом 1 в очередную двойку разрядов множителя
- •Умножение на два разряда с преобразованием множителя заменой цепочек единиц нулями
- •Умножение на два разряда множителя с увеличенным количеством нулевых частных произведений
- •Изменение операции над частным произведением
- •Вычисление частного произведения с требуемым знаком
- •Сокращение матриц дополнительных кодов частных произведений
- •Табличный способ умножения
- •Умножение чисел большой разрядности
- •Операции алгебраического деления и вычисления остатка
- •Математические основы некоторых способов деления двоичных чисел
- •Деление двоичных чисел в прямом коде
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление с вычислением очередного сдвинутого влево остатка
- •Деление без записи очередного остатка на место предыдущего
- •Деление двоичных чисел в дополнительном коде
- •Деление нормализованных двоичных чисел
- •Некоторые способы ускорения деления
- •Операция сравнение
- •Выполнение операций в двоично-десятичной системе счисления
- •Вычисление двоично-десятичного кода обратной десятичной цифры
- •Взаимные преобразования прямого, обратного и дополнительного кода двоично-десятичного числа
- •Изменение знака двоично-десятичных чисел
- •Сложение двоично-десятичных чисел
- •Сложение в двоично-десятичной системе 8421
- •Вычитание двоично-десятичных чисел
- •Литература
Позиционные системы счисления
Системой счисления называют язык, предназначенный для описания количества.
Цепочки символов
+28 и XXVIII
принадлежат двум разным языкам или системам счисления с разными алфавитами и описывают, обозначают или кодируют одно и то же количество или число.
В бесконечном множестве систем счисления выделим класс позиционных систем счисления. Примером позиционной системы счисления является десятичная система счисления, которой мы пользуемся в повседневной жизни.
В современных ЭВМ наиболее широко используются позиционные системы счисления. Среди непозиционных систем счисления для применения в ЭВМ наибольший интерес представляют системы счисления в остаточных классах [1], [2] имеющие целый ряд преимуществ перед позиционными системами, но в этой книге они не рассматриваются.
Позиционные системы счисления3 задаются их алфавитом
и
основанием
.
Символы (значки) из подмножества
называют цифрами.
Символы (+) плюс и (–) минус алфавита
применяют для определения знака числа,
а (.) точку или (,) запятую используют как
разделитель целой и дробной части числа.
В Европейских странах, кроме Великобритании,
применяют запятую, а в англоязычных
странах и в вычислительной технике
точку.
Каждому символу
(цифре) приводят в соответствие некоторое
количество. Символ является кодом
(обозначением) этого количества и имеет
соответствующий количественный
эквивалент. Например, символ или цифра
7 десятичной системы счисления кодирует
известное каждому количество или, это
то же самое, число.
Основание
системы счисления, так же как и ее цифры,
кодирует число. Например, в десятичной
системе счисления основание
есть код количества десять.
Цепочку символов конечной длины называют словом. В позиционной системе счисления слово кодирует число. Код числа цепочка символов алфавита A, например вида
где
– цифра числа, размещенная в позиции
,
причем
,
Примером слова в
традиционной десятичной системе
счисления с основанием
и алфавитом
может служить цепочка символов +234.061
являющаяся кодом числа (количества).
Для краткости слово код обычно опускают,
и запись +234.061 называют числом, подразумевая
определенную позиционную систему
счисления, в которой это число записано.
Это же слово (+234.061) в другой позиционной
системе счисления, например в восьмеричной,
кодирует совсем другое число.
Каждая цифра в
слове размещена в ее позиции, откуда и
происходит название рассматриваемого
класса систем счисления. Каждая позиция
имеет порядковый номер (индекс)
.
В слове +234.061 позиция цифры 4 имеет индекс
;
индекс позиции цифры 0
,
а позиции цифры 3
.
Значение
,
а
.
Позицию цифры в
слове называют разрядом.
Разряд имеет вес. Вес позиции (разряда)
равен
.
Вес позиции с
всегда равен единице, так как
.
В слове +234.061 при
вес позиции с цифрой 2
,
а вес позиции с цифрой 1
.
Количественный
эквивалент цифры в слове зависит от
занимаемой ею позиции, и численно равен
произведению количественного эквивалента
собственно цифры на вес разряда, в
котором она размещена. В числе +234.061
цифра 3 имеет количественный эквивалент
.
Для определения
количественного эквивалента цифры в
числе необходимо знать не только
количественные эквиваленты основания
системы счисления и цифр ее алфавита,
но и значение индекса позиции хотя бы
одной из цифр числа. С этой целью
изобретатели десятичной системы
счисления предложили отмечать разделителем
(,) или (.) позицию с индексом
,
а при отсутствии разделителя считать,
что
.
Отсутствие разделителя означает, что
число является целым. Конструктор новой
системы счисления может вносить иные
предложения.
Например, если
слово +234.061 записано в системе счисления
с основанием
и алфавитом цифр
,
то количественный эквивалент цифры 6 в
слове +234.061 равен
.
Знак числа (+) или
(–) принято писать слева в позиции
.
Такое число называют числом
со знаком.
Если в позиции
знак отсутствует
,
то число называют числом
без знака и
его количественный эквивалент считают
положительным.
Слово, так же как и цифра, является кодом некоторого количества и, следовательно, имеет количественный эквивалент. Количественный эквивалент числа равен сумме количественных эквивалентов всех его цифр с учетом веса их позиций и знака числа,
(2-01)
Количественный эквивалент числа, цифры и т.д. обычно называют их значением.
Например, в
традиционной десятичной системе
счисления запись числа без знака 403,76
состоит из пяти цифр размещенных в пяти
позициях, три из которых расположены
слева от запятой, а две других – справа.
Номера позиций
расположенных слева от запятой 0, 1, 2, а
справа – (–1),
(–2). Позиция цифры 3
числа 403.76 имеет индекс 0, цифры 4 – (+2), а
цифры 6 – (–2). Веса позиций цифр числа
403.76 будут 102, 101, 100, 10-1, 10-2 или, это то же
самое:
.
Количественный эквивалент цифры 4 в
числе 403.76 равен
,
а цифры 6 –
.
Значение (количественный эквивалент)
числа 403.76, у которого
и
знак по умолчанию (+), на основании (2-01)
Такое же значение будет иметь слово +403.76. Слово –403.76 будет иметь количественный эквивалент –403,76.
Однако если слово
403.76 записано в восьмеричной системе
счисления
,
то его количественный эквивалент,
значение или соответствующее слову
число равны
.
В последующем, так же как в приведенных примерах, будем количественные эквиваленты кодов чисел представлять их записями в традиционной десятичной системе счисления.
Все приведенные в примерах числа являются действительными. Признаком того, что число действительное, является наличие в его записи разделителя (.), а не равенство нулю его дробной части. Запись –403,00 следует считать числом действительным, несмотря на то, что его количественный эквивалент равен количественному эквиваленту целого числа (–403). В некоторых случаях, чтобы подчеркнуть, что число является действительным, нули справа от разделителя не пишут, но разделитель сохраняют, например (–403.).
Признаком целого числа является отсутствие в записи числа разделителя, например (–43).
При записи правильной дроби, например (+0.403), иногда допускают исключение нуля в записи целой части числа и пишут (+.403).
Особыми числами являются +0 и –0. Количественный эквивалент у этих чисел отсутствует или, как говорят, равен нулю. Однако знак нуля может быть (+) или (–). В некоторых случаях знак нуля влияет на результаты вычислений, но это уже особенности арифметики, а не языка описания количества.
Языку описания количества принадлежит бесконечное множество цепочек символов из алфавита языка A. Однако не все цепочки, составленные из символов его алфавита, принадлежат языку. Например, цепочка 78+ не принадлежит языку описания количеств десятичной системы счисления.
Основание позиционной системы счисления P может быть целым, действительным (рациональным или иррациональным), положительным или отрицательным, мнимым или комплексным, но не может быть равным нулю. Количественные эквиваленты цифр алфавита не обязательно должны быть целыми и положительными. Алфавит может состоять из положительных и/или отрицательных цифр. Наличие нуля в алфавите необязательно.
В любой позиционной системе счисления нельзя представить все возможные количества.
Десятичная система
счисления с основанием
и алфавитом
является примером позиционной системы
счисления с положительным целым
основанием и положительными целыми
цифрами алфавита. В этой системе счисления
нельзя записать иррациональные и
комплексные числа. Действительно, для
записи иррациональных чисел, например
или значения
требуется бесконечная цепочка цифр,
которую записать невозможно. Не удастся
записать значение мнимого числа
.
Значение
описано здесь арифметическим выражением.
Можно построить
десятичную систему счисления с основанием
и алфавитом из 10 цифр
.
Здесь цифра с черточкой (один символ)
кодирует отрицательное количество,
например
.
В этой системе счисления можно записывать
положительные и отрицательные целые
числа, несмотря на отсутствие символов
знака числа в алфавите. Например, запись
32
имеет количественный эквивалент
.
Слово
кодирует количество
.
Если расширить алфавит разделителем
(.), можно будет записывать действительные
числа. Нетрудно проверить, что
количественный эквивалент слова
равен 3,93. Существенно, что в алфавите
такой системы счисления знаки числа
(+) и (–) отсутствуют.
Попробуйте записать в этой системе счисления все целые числа в интервале [–20, +20].
В системе счисления
с основанием
и алфавитом
веса позиций будут нарастать слева
направо. Поэтому запись 673.04 при
будет кодировать количество
представленное в традиционной десятичной системе счисления. Сравните записи этого количества в традиционной десятичной системе счисления (403.76) и в сконструированной (673.04) системе счисления.
При и
можно кодировать положительные и отрицательные числа такие же, как в традиционной десятичной системе счисления.
Изображение
символов алфавита в этой системе
счисления могло бы быть иным. Выбранные
“иероглифы” позволяют читателю легко
ассоциировать цифру с кодируемым ею
количеством. Например, цифра
имеет количественный эквивалент (-0,1),
а цифра
кодирует количество (+0,1).
Введение в алфавит только одной цифры с положительным количественным эквивалентом позволяет кодировать положительные и отрицательные количества.
Количество 9 будет
записано как
,
так как
.
Количество (–9)
будет записано как
.
Запись
кодирует количество
Примером системы
счисления с отрицательным целым
основанием и положительными цифрами
алфавита является троичная система при
,
.
В этой системе счисления можно записывать отрицательные и положительные количества. Веса разрядов при основании
– слева от запятой:
(–3)0 = 1, (–3)1 = –3, (–3)2 = 9, (–3)3 = –27, (–3)4 = 81, … ;
– справа от запятой:
,
,
,
,
…
В табл.2.1 приведены
записи некоторых целых чисел в системе
с основанием
.
Количественный
эквивалент слова 121 записанного в системе
равен
;
а слова 1210 равен
.
Троичное число
11.201 кодирует количество
Выразить точно это количество в традиционной системе счисления не удается, так как ему соответствует бесконечная периодическая дробь.
К
Таблица 2.1
Десят.
целое
В системе
P
= -3
Десят. целое
В системе
P
= -3
0
1
2
3
4
5
6
7
8
9
10
11
12
0
1
2
120
121
122
110
111
112
100
101
102
220
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
12
11
10
22
21
20
1202
1201
1200
1212
1211
1210
1222
и алфавитом цифр
можно записывать как положительные,
так и отрицательные числа разными
способами. Например, десятичное число
+5 можно записать как 12 или как
.
Десятичное –5, можно записать как
или как 21.
Подробнее с различными системами счисления можно познакомиться в [3] и [4].
Для любой системы счисления могут быть разработаны правила выполнения элементарных арифметических операций над числами (сложения, вычитания, умножения, деления, сравнения, изменения знака числа и др.).
В универсальных вычислительных машинах наибольшее распространение получила двоичная система счисления. Кроме того, применяются восьмеричная, шестнадцатеричная и десятичная. В специализированных вычислителях находят применение и иные системы, в частности системы счисления с комплексным основанием.
Ничто и никто не препятствует конструктору изобретать и применять удобные в проектируемом устройстве системы счисления, в том числе не позиционные.