- •2.3. Устройства ввода вывода
- •ГЛАВА 3. АРИФМЕТИЧЕСКИЕ ОСНОВЫ ЭВМ
- •3.1 Системы счисления и понятие кода
- •3.2. Арифметические основы ЭВМ
- •3.2.1 Форма представление чисел с фиксированной запятой
- •ГЛАВА 4. ЛОГИЧЕСКИЕ ОСНОВЫ ЭВМ
- •4.1. Логические основы построения и работы компьютеров
- •4.2. Электронные технологии логических элементов ЭВМ
- •ГЛАВА 5. ПРОГРАММНАЯ МОДЕЛЬ МИКРОПРОЦЕССОРА
- •ГЛАВА 6. СТРУКТУРА ПРОЦЕССОРОВ IA-32
- •ГЛАВА 7. АРХИТЕКТУРА ПРОЦЕССОРОВ AMD
ГЛАВА 3. АРИФМЕТИЧЕСКИЕ ОСНОВЫ ЭВМ
3.1 Системы счисления и понятие кода
Как уже отмечалось, в процессе переработки информации цифровые ЭВМ - компьютеры, оперируют числами, которые представляются в некоторой системе счисления.
Система счисления - это совокупность приемов и правил для записи чисел цифровыми знаками. Запись числа в некоторой системе счисления часто называют кодом числа.
Элементы (символы) алфавита, которые используются для записи чисел в некоторой системе счисления, принято называть цифрами. Каждой цифре данного числа однозначно сопоставляется ее количественный (числовой) эквивалент.
Различают позиционные и непозиционные системы счисления.
Непозиционная система счисления - это система, для которой значение символа, т.е. цифры, не зависит от его положения в числе. К таким системам относится, в частности, римская система (правда с некоторыми оговорками). Это, наверное, самая известная система, после арабской. С нею мы сталкиваемся достаточно часто в повседневной жизни. Это номера глав в книгах, указания века, числа на циферблатах часов, и др. Возникла эта нумерация в древнем Риме. Здесь, например, символ V всегда означает пять, вне зависимости от места его появления в записи числа. Использовалась она для аддитивной алфавитной системы счисления. Записывались цифры числа начиная с больших значений и заканчивая меньшими, слева направо. Если цифра с меньшим значением записывалась перед цифрой с большим значением, то происходило ее вычитание, например IV. Или CCXXXVII=237, но XXXIX=39.
Есть и другие современные непозиционные системы. Недостатком непозиционных систем счисления является неограниченное количество различных цифр, необходимых для представления любого числа.
Позиционная система счисления - это система, в которой значение каждой цифры зависит от ее числового эквивалента и от ее места (позиции) в числе, т.е. один и тот же символ (цифра) может принимать различные значения.
Наиболее известной позиционной системой счисления является десятичная система счисления. Например, в десятичном числе 254 первая цифра справа означает 4 единицы, соседняя с ней - 5 десятков, а левая - 2 сотни.
Всвязи с тем, что в цифровых автоматах в основном используются позиционные системы счисления, то мы в дальнейшем будем рассматривать только такие системы.
Двоичная система счисления является самой молодой из существующих. Эта система обладает рядом качеств, делающих ее очень выгодной для использования в цифровых автоматах (компьютерах). Официальное рождение двоичной арифметики связано с именем Г.В. Лейбница, опубликовавшего в 1703 г. Статью, в которой он рассмотрел правила выполнения арифметических действий над двоичными числами. Для двоичной системы необходимо всего два символа – 0, 1. В двоичной системе арифметические операции особенно просты.
Любая позиционная система счисления характеризуется основанием.
Основание или базис q естественной позиционной системы счисления это количество знаков или символов, используемых для изображения числа в данной системе.
Поэтому, возможно бесчисленное множество позиционных систем, т.к. за основание можно принять любое число, образовав новую систему счисления.
Когда мы записываем некоторое число в позиционной системе счисления, то размещаем соответствующие цифры числа по отдельным нужным позициям, которые принято называть разрядами числа в данной позиционной системе счисления. Количество разрядов в записи числа называется разрядностью числа и совпадает с его длиной.
Впозиционной системе счисления справедливо равенство:
A a |
qn-1 a qn-2 |
... a qk a q0 |
a q-1 |
... a q-m, (3.1) |
||
q n-1 |
n-2 |
k |
0 |
-1 |
-m |
|
|
|
|
|
|
|
27 |
где Aq - произвольное число, записанное в системе счисления с основанием q; ai -
коэффициенты ряда, т.е. цифры системы счисления; n, m - количество целых и дробных разрядов соответственно.
Максимальное целое число, которое, может быть представлено в m разрядах, Amax=qn - 1. Минимальное значащее, не равное 0 число, которое можно записать в m разрядах дробной
части Amin=q-m.
Например, число А=123,45 обозначает сокращенную запись выражения
А=1·102 + 2·101 + 3·100 + 4·10-1 + 5·10-2.
Нетрудно убедиться в том, что в любой системе счисления, использующей арабские цифры, основание системы представляется как число 10.
Например, согласно (3.1)
1964,5210 = 1 103 + 9 102 + 6 101 + 4 100 + 5 10-1 + 2 10-2, 124=5378 = 1 82 + 2 81 + 4 80 + 5 8-1 + 3 8-2 + 7 8-3, 1001,11012 = 1 23 + 0 22 + 0 21 + 1 20 + 1 2-1 + 1 2-2 + 0 2-3 + 1 2-4.
Индекс, приписываемый к числу, указывает систему счисления, в которой представлено данное число.
Основание системы счисления показывает, сколько различных значений в пределах i- того разряда может принимать каждая цифра ai числа A. Номера разрядов в позиционной системе счисления отсчитываются в целой части влево от запятой, а в дробной - вправо от запятой. Причем, нумерация разрядов начинается с 0. Величина основания позиционной системы счисления определяет ее название: для десятичной системы это будет 10, для восьмеричной - 8, для двоичной - 2 и т.д. Как уже отмечалось, обычно вместо названия системы счисления используют термин "код числа". Например, под понятием двоичный код подразумевается число, представленное в двоичной системе счисления, под понятием десятичный код - в десятичной системе счисления и т.д.
Для записи числа в десятичной системе используется 10 различных цифр от 0 до 9
А10 = (0,1,2,3,4,5,6,7,8,9).
В шестнадцатеричной – 16
А16 = (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F),
где A 10, B 11, C 12, D 13, E 14, F 15 .
Ввосьмеричной – 8
А8 = (0,1,2,3,4,5,6,7).
Вдвоичной – 2
А2 = (0,1).
Согласно (1.1) каждый разряд числа в двоичной системе счисления слева от запятой представляется двойкой в соответствующей положительной степени, а справа от запятой - двойкой в отрицательной степени. Например
24 |
23 |
22 |
21 |
20 |
2-1 |
2-2 |
2-3 |
2-4 |
16 |
8 |
4 |
2 |
1,0 |
0,5 |
0,25 |
0,125 |
0,0625 |
Примеры представления чисел в различных системах счисления: |
|
|||||||
|
|
|
1010 = 10102 = 128 = A16 |
|
|
|||
|
|
|
1610 = 100002 = 208 = 1016 |
|
|
|||
Для обработки |
25510 = 111111112 = 3778 = FF16. |
двоичная система |
||||||
информации |
в |
компьютере обычно |
используется |
счисления. Это объясняется, в частности, тем, что для размещения чисел (операндов) в компьютерах используются регистры и ячейки памяти, состоящие из триггеров или элементов с триггерной характеристикой, которые, как известно, имеют два устойчивых состояния. Одному из этих состояний ставится в соответствие 1, а другому - 0. Количество триггеров, т.е. двоичных разрядов, в регистре или ячейке памяти определяет длину слова, характерную для данного компьютера, а совокупность этих двоичных разрядов называется разрядной сеткой. Номер разряда такой сетки, отведенной для изображения целого числа в двоичной системе счисления, совпадает с соответствующим показателем степени двойки.
28
Таким образом, длина числа - это количество позиций (или разрядов) в записи числа. Для разных систем счисления характерна разная длина разрядной сетки, необходимая для записи одного и того же числа. Например, десятичное число 999 (99910) соответственно в шестнадцатеричной, восьмеричной и двоичной системе счисления будет иметь следующий вид 3Е716, 17478, 11111001112, т.е. чем меньше основание системы счисления, тем больше длина числа.
В любых цифровых автоматах длина разрядной сетки выбранной системы счисления фиксирована, что принципиально ограничивает точность и диапазон представления чисел.
Диапазон представления чисел в заданной системе счисления - это интервал числовой оси, заключенный между максимальным и минимальным числами, значение которых зависит от длины разрядной сетки.
При обмене данными между компьютером и внешними устройствами возникает необходимость в обмене знаковыми и буквенными символами. Этим символам в компьютере также ставится в соответствие некоторый код в двоичной системе счисления. Для представления цифр и букв в двоичной системе в настоящее время наиболее распространен код ASCII. Для представления любого символа в этом коде отводится 8 двоичных разрядов, т.е. один байт. Примеры кода ASCII приведены в таблице 3.1.
|
|
Примеры кода ASCII |
Таблица 3.1 |
|
|
|
|
||
Символы |
Десятичный |
Двоичный |
Восьмеричный |
Шестнадца-теричный |
|
код |
код |
код |
код |
0 |
48 |
0110000 |
060 |
30 |
1 |
49 |
0110001 |
61 |
31 |
2 |
50 |
0110010 |
62 |
32 |
A |
65 |
1000001 |
101 |
41 |
B |
66 |
1000010 |
102 |
42 |
F |
70 |
1000110 |
106 |
46 |
: |
58 |
0111010 |
72 |
3F |
( |
40 |
0101000 |
50 |
28 |
При выборе системы счисления для ЭВМ необходимо учитывать, что, во-первых, основание системы счисления определяет количество устойчивых состояний, которые должен иметь функциональный элемент, выбранный для изображения разрядов числа; во-вторых - длина числа существенно зависит от основания системы счисления; в третьих - система счисления должна обеспечить простые алгоритмы выполнения арифметических и логических операций.
Широкое применение двоичной системы счисления обусловлено следующими причинами:
-разнообразием и простотой технической реализации элементов с двумя устойчивыми состояниями;
-хорошей различимостью двух состояний, уменьшающей возможность искажения сигналов и сбоев;
-простотой производства арифметических операций;
-экономичностью оборудования.
Экономичность оборудования при использовании двоичной системы счисления проиллюстрируем на следующем примере. Мы проектируем устройство, в котором для отображения каждой цифры числа требуется один элемент. Тогда для представления любой цифры в системе счисления с основанием q потребуется q различных элементов. Для отображения в этой же системе счисления любого числа содержащего nq разрядов, надо Lq=q·nq элементов.
Например, для представления любого числа от 000 до 99910 в десятичной системе требуется n10=3 разряда, каждый из которых содержит по 10 цифр; при L10=30 элементов. Для отображения этих же чисел в двоичной системе требует n2=10, каждый из которых содержит по две цифры, т.е. L2=20 элементов.
Подобное сравнение десятичной и двоичной систем счисления показывает, что десятичная в 1,5 раз менее экономична двоичной.
29
Наиболее удобны условия реализации двоичных цифр, т.к. физических процессов, имеющих два устойчивых состояния, гораздо больше, чем процессов с числом четко различимых состояний больше двух. К тому же в процессах с двумя устойчивыми состояниями различие между этими состояниями носит качественный, а не количественный характер, что обеспечивает надежную реализацию двоичных цифр.
Таким образом, простота арифметических и логических действий, минимум используемого оборудования для представления чисел и наиболее удобные условия реализации только двух устойчивых состояний определили применение двоичных систем счисления практически во всех существующих и проектируемых цифровых вычислительных машинах.
Вдвоичной системе арифметические операции особенно просты. В двоичной системе не существует «таблицы сложения», которую нужно было бы запоминать, так как перенос в старший разряд начинается с 1+1=10. При сложении больших чисел необходимо лишь складывать по столбцам или разрядам, как в десятичной системе, памятуя лишь о том, что как только сумма в столбце достигнет числа 2, двойка переноситься в следующий столбец (влево) в виде единицы старшего разряда. Вычитание производится так же, как в десятичной системе, не задумываясь о том, что теперь в случае необходимости нужно занимать из столбца слева 2, а не
10.
Однако за эту легкость приходится платить большим числом знаков при умножении даже небольших чисел.
Втаблице 3.2 приведены правила сложения, вычитания и умножения двоичных чисел.
Таблица 3.2
Правила сложения, вычитания и умножения двоичных чисел
|
Сложение |
Вычитание |
Умножение |
0 + 0 = 0 |
0 - 0 = 0 |
|
0 х 0 = 0 |
1 + 0 = 1 |
1 - 0 = 1 |
|
1 х 0 = 0 |
0 + 1 = 1 |
1 - 1 = 0 |
|
0 х 1 = 0 |
1 + 1 = 10 |
10 - 1 = 1 |
|
1 х 1 = 1 |
В общем случае процедуры сложения и вычитания двух чисел в любой позиционной системы счисления начинаются с младших разрядов, см. главу 3.
Код суммы каждого i-того разряда сi получается в результате сложения ai+bi+1, где единица соответствует переносу из младшего (i-1) - разряда в i-й, если в младшем разряде код суммы получился больше или равным основанию системы счисления.
Код разности каждого i-го разряда получается в результате вычитания ai-bi-1, где единица соответствует «заему», если он был, в младшие разряды величины, равной основанию системы счисления.
Следовательно, правила и методы сложения и вычитания в любой позиционной системы счисления в принципе остаются такими же, как в десятичной системе.
Рассмотрим правила арифметики с числами, представленными в десятичном, двоичном, восьмеричном и шестнадцатеричном коде на простом примере, см. табл. 3.3.
Таблица 3.3
Правила сложения
Слагаемые |
Десятичный |
Двоичный |
|
Код |
код |
Перенос |
|
1 111 |
1-е |
166 |
10100110 |
2-е |
47 |
00101111 |
Результат |
213 |
11010101 |
Восьмеричный код |
|
Шестнадца-теричный код |
11 |
|
|
|
1 |
|
246 |
|
А5 |
57 |
|
2F |
325 |
|
D5 |
Вычитание также производится поразрядно, начиная с младшего разряда. При вычитании в данном разряде из нуля единицы необходимо занять единицу из соседнего старшего разряда, которая равна двум единицам данного разряда.
Суммирование двоичных чисел в компьютерах осуществляется при помощи двоичных сумматоров, а вычитание - двоичных вычитателей. Но, как будет показано в дальнейшем, вычитание можно организовать также при помощи процедуры сложения, т.е. при помощи двоичных сумматоров, если вычитаемое представить в дополнительном или обратном коде и тем самым исключить необходимость в двоичных вычитателях.
30