- •Глава I. Организация вычислений в эвм
- •1. Позиционные системы счисления
- •2. Алгоритмы перевода чисел из одной системы счисления в другую
- •3. Формы представления чисел в двоичной системе счисления
- •4. Операции сложения чисел в прямом, обратном и дополнительном кодах с фиксированной запятой
- •4.2. Умножение чисел в дополнительных кодах
- •4.3. Операция умножения над обратными кодами сомножителей
- •4.6. Выполнение операции сложения над числами с плавающей запятой
- •5. Форматы данных
- •6. Стадии выполнения команды и способы адресации
Глава I. Организация вычислений в эвм
1. Позиционные системы счисления
Способ представления чисел посредством знаков называется системой счисления (СС). Для кодирования информации в ЭВМ используются позиционные СС, в которых значение любого символа (цифры) определяется его позицией или расположением в представлении числа. Любое действительное число можно представить в позиционной системе счисления в виде степенного ряда
Х = (x m km + xm-1km-1 + + x1k1 + x0k0 + x-1k-1 + + x-n k-n),
где k – основание системы счисления (k 2, целое положительное число); xi – цифры (xi {0, 1, …, k-1}); i – номер позиции (разряд) числа, ki – вес цифры. Так как в вычислениях часто используется одинаковое основание, то оно не присутствует в записи числа, а число без весовых коэффициентов ki представляется в виде
X = xmxm-1 x1x0, x-1 x-n ,
где целая часть числа отделяется от дробной запятой. С целью упрощения записи числа в нем опускают запятую для целых чисел и индексы i, определяющие вес цифры в представлении числа. Для того чтобы отличить числа различных СС, их в конце помечают цифрами или символами основания, например, 506(8), 506,Аh – числа восьмеричной и шестнадцатеричной систем счисления.
Определим диапазон представления числа в (m+n+1)- разрядной сетке. Для этого вычислим максимальное число без знака, которое можно разместить в этой сетке в k-й СС. Подставляя в разряды наибольшую цифру в представлении числа в виде степенного ряда, получим
Xmax =.
В данном выражении есть сумма членов геометрической прогрессии, которая равна значению
.
Подставляя это значение в выражение Xmax, получим
Xmax = km+1 – k-n,
где (m+1) – число разрядов целой части числа без знака, а n – дробной. Тогда с учетом знака диапазон представления чисел X будет определяться выражением
- (km+1 – k-n) X + (km+1 – k-n).
В этом диапазоне может быть размещено наименьшее отличное от нуля число без знака
Xmin = k-n.
Число различных цифр, которое можно разместить в (m+n+1)-разрядной сетке без знака, включая и нуль, можно определить из выражения
.
Для представления М различных цифр в k-й СС потребуется следующее число разрядов
L =] log k M [,
где скобки указывают на округление до большего целого.
Затраты оборудования (число элементов) для представления любого (m+n+1)-разрядного числа без знака в k-й СС могут быть определены по формуле
Nk = k (m+n+1).
Подставляя вместо (m+n+1) значение, определенное путем логарифмирования выражения для М, получим
Nk = k log k M.
Для определения наилучшей СС для ЭВМ по затратам оборудования воспользуемся функцией F = Nk / N2, вид которой показан на рис. 1.1.
Можно показать, что минимальные затраты оборудования при непрерывном k будут соответствовать системе с основанием е 2,72 натурального логарифма и F = N3 / N2 = 0,946.
Рис. 1.1. Зависимость затрат оборудования в k-й СС
Таким образом, для ЭВМ оптимальной СС по затратам оборудования является троичная, а затем, чуть хуже, двоичная. Учитывая то, что многие алгоритмы арифметических операций в двоичной СС выполняются проще, чем в троичной, и намного быстрее и удобней запоминать и передавать цифры 1,0 (включено, выключено), вся информация в ЭВМ кодируется, преобразуется и запоминается в двоичной СС. Кроме двоичной СС из-за кратности оснований используются также восьмеричная и шестнадцатеричная СС, цифры и символы которых кодируются двоичными эквивалентами.
Для обозначения цифр восьмеричной СС 0, 1, …, 7 пользуются двоичными кодами: <000>, <001>, …, <111>. Цифры и символы шестнадцатеричной СС 0, 1, …, 9, А(10), B(11), C(12), D(13), E(14), F(15) кодируются тетрадами: <0000>, <0001>, …, <1001>, <1010>, <1011>, <1100>, <1101>, <1110>, <1111> с использованием всех комбинации в тетраде нулей и единиц с весами <23, 22, 21, 20>, т.е. код <8, 4, 2, 1>.
Так, если в тетраде имеется код <1011>, то легко определить цифру 16 СС путем сложения значащих весовых коэффициентов <123 + 022 + 121 + 120>(2) = 11(10) = В(16) = Bh.