книги из ГПНТБ / Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие
.pdf2) применение двоичной системы счисления дает возмож ность достаточно просто реализовать арифметические и логи ческие операции. Это обстоятельство существенно упрощает функциональный состав машины.
В табл. 2.1 и 2.2 показано сложение и умножение двоичных цифр.
Т а б л и ц а 2.1
Таблица сложения
0 + 0 = 0
0 + 1 = 1
1 + 0 - 1
1 + 1 = 1 0
Т а б л и ц а 2.2
Таблица умножения
0 x 0 |
= 0 |
о X |
г о |
i x o - o |
|
1 X 1 |
— 1 |
Арифметические операции над двоичными многоразряд ными числами выполняются аналогично операциям в десятич ной системе счисления (табл. 2.3).
|
|
|
|
|
Т а б л и ц а 2.3 |
||
Операции |
Десятичная |
система |
Двоичная система |
||||
|
, |
19,61 |
|
. |
101,101 |
||
Сложение |
' |
7,81 |
|
|
10 |
111 |
|
|
|
27,45 |
|
1000,100 |
|||
|
|
37,16 |
|
|
1011,01 |
||
Вычитание |
— |
5,08 |
|
~ |
101,11 |
||
|
|
32,08 |
|
|
101 ,10 |
||
|
|
|
3,12 |
|
|
1001,11 |
|
Умножение |
|
х |
2,04 |
|
* |
10,01 |
|
|
1 |
248 |
|
|
1001 |
11 |
|
|
|
|
|
||||
|
^ |
624 |
|
+ |
100111 |
|
|
|
|
6,3648 |
|
10101,1111 |
|||
|
|
204 |
12 |
|
1100 |
100 |
|
Деление |
_ |
12 |
17 |
_ |
100 |
|
11 |
|
— |
|
|
|
|
|
|
|
|
84 |
|
|
100 |
|
|
|
|
0 |
|
|
0 |
|
|
]0
Разряды двоичных чисел принимают значения 1 или 0. Эта особенность позволяет путем несложного схемного решения реализовать логические операции, содержащие поразрядное сравнение кодов, выделение части числа, сдвиги и т. д.
К недостаткам двоичной системы следует отнести необхо димость перевода исходной информации, представленной в об щепринятой десятичной системе, для ввода в машину. Резуль таты решения задачи целесообразно выдавать из машины в десятичной системе. Таким образом, необходимо осуществлять обратный перевод, выполняемый также по специальной про грамме.
Универсальный алгоритм, на основании которого выпол няется 'перевод из одной системы счисления в другую, заклю чается в последовательном делении целой части числа и полу чаемых частных на основание новой системы и последователь ном умножении дробной части исходного числа и получаемых произведений на то же основание, представленное в исходной системе счисления.
Если представить в системе счисления с основанием q це лую часть числа N n (2.1) в виде [1]:
yv;,<7)== + (/v,;_ I. F - 4 - ^ , - 2 - ^ - 2+ • • • -f д ^ '+ л д , (2.2)
где k— основание новой системы, то при последовательном де лении приведенного выражения, записанного цифрами систе мы q, на основание k будут определяться остатки, которые представляют собой цифры целой части числа в новой системе счисления. Процесс продолжается до получения частного, рав ного нулю. Остатки Nj являются цифрами переведенного чис ла, причем остаток N „_, представляет собой старшую цифру.
Если представить в системе счисления с основанием q дробную часть числа Л/лр в виде
M § = ± ( N - r b - l + N - 2- k - * + ■ • • 4 - А ^ .А - " 1). (2.3)
то путем последовательного умножения дробной части исход ного числа и дробных частей получающихся произведений на основание новой системы счисления k будут найдены все целые части, которые являются цифрами дробной части взятого для перевода числа в системе k. Первая после умножения целая часть TV-j представляет собой первую цифру дробной части переведенного числа.
Рассмотрим примеры перевода чисел.
Пример 1. Перевести из десятичной системы счисления число Л^к» =249,17 в двоичную систему по изложенному выше алгоритму.
Представим целую и дробную части числа A'(i0):
Аф10) = 249; |
N $ ,= 0,17. |
11
Для перевода целой части числа Л^ш) выполним после довательное деление частных на основание двоичной системы,
принимая за первое частное Л/цо) исходное число.
2 остатки
249^10) |
1 |
|
|
124 |
0 |
|
|
62 |
0 |
jV(io, = 249, |
/V(u2) = 11111001 |
31 |
1 |
||
15 |
1 |
|
|
7 |
1 |
|
|
Э1
1 1
Для перевода дробной части числа Nfw) выполним после довательное умножение значений числа после запятой на осно вание 2.
0,17 |
|
|
034 |
|
|
068 |
|
|
Х ___ 2_ |
|
|
136 |
|
Щ = 0,0010101 |
х ___2 |
Л$о) = 0,17 |
|
072 |
|
|
144
2
088
Км
176 и т. д.
Порядок считывания двоичных разрядов целой и дробной ча стей переведенного числа показан стрелками. При переводе десятичной дроби количество двоичных разрядов определяется заданной точностью, в данном примере выбран знак после за пятой.
249,17(io) -*■ 11111001,0010101(2).
Пример 2. Перевести из двоичной системы счисления число *Y(2) =dil01Oil 11,101001 в систему с основанием 10, пользуясь приведенными выше правилами.
12
Основание десятичной системы счисления в исходной систе ме имеет следующую запись 1010. Тогда при переводе целой части числа остатки от деления будут определены:
1 ) |
1 1 0 1 0 1 1 1 ( 2) : |
1 0 1 0 (2) |
= |
1 0 1 0 1 ( 2 ) |
о с т а т о к 1 0 1 (2) |
|
2 ) |
1 0 1 0 1 (2) : |
1 0 1 0 (7) |
= |
1 0 ( 2) |
о с т а т о к |
1 (2) - у |
3 ) |
1 0 ( 2, : |
1 0 1 0 (2) = |
0 |
о с т а т о к |
1 0 ( 2) - * ■ |
|
|
Л$>) = |
11010111, |
|
Л'(им) = |
215 |
|
Проанализируем результат: последовательного умножения при переводе дробной части:
1) |
0,101001 |
2) |
0,011010 |
Х |
10Ю |
|
Х _____ 1010 |
, |
101001 |
|
1101 |
'г |
101001 |
|
1101 |
|
110,011010 |
|
100,000100 |
Значение первой целой части Л /_,= 110 является первой после запятой цифрой исходного числа в новой системе счисления, изображенной в системе с основанием 2.
110(2) 6(Ю).
Аналогичные рассуждения можно провести и для 'последую щих разрядов дробной части переведенного числа:
Л'_2= 100. 100(2) ->■4(10).
Т огда
Л$) = 0,101001
имеет десятичный эквивалент
Л'?1Ро; = 0,64.
Искомое число
А;(1Р) = 215,64.
Приведенные правила перевода чисел из одной позицион ной однородной системы счисления в другую следует приме нять, учитывая особенности записи и выполнения арифмети че ских операций в исходной системе.
Рассмотрим пример перевода числа из восьмеричной в двоичную и затем в десятичную систему счисления. Для второ предварительно приведем таблицу записи ряда чисел в систе мах с основаниями 10; 2; 8 (табл. 2.4).
13
|
|
Т а б л и ц а 2.4 |
Десятичные |
Двоичные |
Восьмеричные |
числа |
числа |
числа |
0 |
0 |
0 |
1 |
1 |
1 |
') |
10 |
2 |
3 |
11 |
3 |
4 |
100 |
4 |
5 |
101 |
5 |
Г) |
п о |
6 |
7 |
111 |
7 |
8 |
1000 |
10 |
9 |
1001 |
11 |
10 |
1010 |
12 |
11 |
1011 |
13 |
12 |
1100 |
14 |
13 |
1101 |
15 |
14 |
1110 |
16 |
15 |
1111 |
17 |
16 |
10000 |
20 |
Восьмеричное число =273 перевести в двоичную си стему.
Основание двоичной системы имеет восьмеричную запись 2. При переводе будем последовательно делить /Vw на 2, поль зуясь правилами исходной оистемы.
2 |
остатки |
|
|
2 / 3 (8> |
1 |
|
|
|
|
||
135 |
1 |
|
|
56 |
0 |
|
|
27 |
1 |
273,8;- Ю11101 1гг; |
|
13 |
1 |
||
|
|||
5 |
1 |
|
|
2 |
0 |
|
|
1 |
1 |
|
14
Для получения десятичного эквивалента числа /фа; = 273 представим основание этой системы в восьмеричной записи: 10(io;-> 12(В;. Тогда в соответствии с правилами перевода
1) |
273(8; |
: |
12(8j = |
22f8j |
остаток |
7(В;- » - 7^0)> “ |
2) |
22(8) |
: |
12;а; = |
1(8) |
остаток |
Юдо -> Яц0). |
3)1(8) : 12,8)== 0 остаток 1(8)Ч- 1,,^,
273(8) -*■ 187(Ю).
Для проверки переведем вычисленное десятичное число Т/оо) в двоичную систему счисления. При делении на основа ние 2 образуется полученный ранее двоичный эквивалент
2 |
остатки |
|
87„0) |
1 |
|
93 |
1 |
|
46 |
0 |
|
23 |
1 |
187,10, -> 10111011(2) |
11 |
1 |
|
5 |
1 |
|
2 |
0 |
|
1 |
1 |
|
Для ввода исходных десятичных чисел в машину необхо димо их представить с помощью тех двухпозиционных элемен тов, на которых выполнены блоки и узлы машины. Эту задачу позволяет решить так называемая двоично-десятичная запись.
Чтобы изобразить десятичные цифры через двоичные раз ряды, необходимо выделить четыре разряда, имеющих веса 2°, 21, 22, 23. Тогда любая десятичная цифра может быть пред ставлена соответствующей двоичной тетрадой, например,
8(Ю) 1000(2), 3(Ю) —v 0011(2), 5(Ю) -> 0101(2) и т. д.
Двоично-десятичное кодирование состоит в замене каждой десятичной цифры числа определенной двоичной тетрадой. На пример, десятичное число 7V(io, =941,375 при двоично-десяглч- ном кодировании будет преобразовано следующим образом:
941,375,ю,-^ 100Г 0100 |
0001, |
ООП 0111 |
0101,210) |
||
9 |
4 |
1 |
3 |
7 |
5 |
При обратном переводе число в двоично-десятичной записи разбивают на тетрады и заменяют их эквивалентными деся тичными цифрами. Например,
0010 1000, 001_^ ОЮ^(2/1о)-> 28,35(,0).
2 |
8 |
3 |
§ |
15
Как видно, ни прямой, ни обратный перевод при двоичнодесятичном кодировании не связан с арифметическими опера циями. Эту особенность рассмотренной формы записи исполь зуют во внешних устройствах машины, где с помощью шифра торов в процессе набора исходных десятичных чисел последние изображаются обычно в виде системы пробивок, соответст вующей двоично-десятичному коду, на перфолентах или перфо картах. Затем устройства ввода преобразуют двоично-десятич ные коды в последовательность электрических сигналов для передачи их во внутренние устройства машины, где по специ альной программе осуществляется дальнейший перевод двоич но-десятичных кодов в двоичную систему счисления. И затем уже весь вычислительный процесс в ЭЦВМ реализуется по двоичной системе.
Перевод из двоично-десятичной формы записи чисел в двоичную обычно выполняется в машинах по вависимости (2.1). По этой зависимости каждая десятичная цифра числа множится на основание десятичной системы в соответствую щей степени, причем арифметические операции в процессе пе ревода реализуются по двоичной системе. Двоичный код вы числяется как сумма полученных произведений.
Например,
187(H), = Ы 0 2+ 8-10'+ 7-10°-> 0001 1000 |
0111 (2/ш, — |
||
|
1 |
~~8 |
|
0001 ■101010+ 1000- 10101+ |
0111- 1010° - |
||
- - 0001- 1100100-К 1000-1010 + |
011Ы |
-* |
|
-V 1100100+ 1010000+111 ^ |
10111011(2). |
||
Двоично-десятичное кодирование используется также как про межуточное при выводе из машины результатов решения, кото рые предварительно необходимо преобразовать из двоичной в десятичную систему.
В некоторых машинах двоично-десятичная запись является основной (отечественные машины «Эра», «Преминь»). Это поз воляет при некотором увеличении оборудования машины ис ключить необходимость программного перевода чисел при из менении системы счисления.
Если исходная числовая информация представляется в де сятичной системе, то командная информация (номера команд, коды операций и адреса) при программировании кодируется па бланках в восьмеричной системе, характеризующейся сле дующей особенностью.
Восьмеричная система счисления имеет основание 8, пред ставляющее целую степень основания 2(8=^23). Поэтому пере вод восьмеричного числа в двоичный эквивалент прост и со
16
стоит в замене каждой восьмеричной цифры соответствующей двоичной триадой (три двоичных разряда).
Например,
725,31(8)-» 11Ю10101, |
011001(a). |
5 |
3 Г |
Шифраторы внешних устройств |
переводят восьмеричные |
числа в двоичные без дополнительных арифметических опера ций. Далее с помощью устройств ввода команды поступают во внутренние блоки ЭЦВМ двоичными кодами, которые пере даются по магистралям машины в виде последовательности электрических сигмалов.
При обратном переводе двоичное число необходимо раз
бить на триады с последующей |
заменой их |
восьмеричными |
|||
цифрами. Например, Л^2) =11010 110, |
11101. |
При переводе по |
|||
лучим |
|
|
|
1П 0Ю — 326,72(8). |
|
11010110, 11101 (?) = 011 010 ПО, |
|||||
<— |
—» |
~з ~9— |
ПТ |
~Т~ ~2~ |
|
Анализ использования двоичной системы счисления в циф ровых машинах показал, что несмотря на увеличение количе ства двоичных разрядов, необходимых для кодирования деся тичных чисел, применение этой системы при двухпозициоиных элементах наиболее выгодно.
§2.2. Формы представления чисел и их запись в машине
Вэлектронной цифровой вычислительной машине числа изображаются определенным количеством двоичных разрядов.
Положение запятой в числе, отделяющей целую часть от дроб ной, может определяться различными способами.
В ряде машин положение запятой в числах фиксируется пе ред некоторым определенным разрядом. Такая форма пред ставления чисел носит название естественной, а машины отно сятся к классу ЭЦВМ с фиксированной запятой. Преимущест венно запятая закрепляется перед первым старшим разрядом, т. е. все числа при расчете должны быть меньше единицы, что достигается соответствующим масштабированием исходных ве личин. Очевидно, что при конечном числе разрядов, которыми располагает машина, при реализации арифметических опера ций могут .получаться двоичные числа, по абсолютной величи не большие 0,111...11 или меньшие 0,000...01. Получение ре зультатов по модулю, больших или равных единице, приводит к переполнению разрядной сетки. В этом случае теряются старшие разряды чисел и результаты искажаются. Числа, по абсолютной величине меньшие 0,000...01, определяются как машинный нуль. При подготовке задачи к решению на машине с фиксированной запятой необходимо учитывать возможный
2 Э. В, Сарннгулан, Г. В, Смирнова |
П7 |
диапазон изменения величин, используемых в процессе реше ния, чтобы с помощью подбора масштабов исключить как пе реполнение разрядной сетки, так и возникновение машинного нуля. Представление чисел в естественной форме используется в основном в специализированных цифровых машинах, где круг решаемых задач вполне определен.
На рис. 2.1 показано возможное распределение разрядов регистра числа в машинах с фиксированной запятой.
|
|
Sod цифровой дробной |
Знаковый разряд |
|
части числа |
|
|
j L — .. |
1 1 О |
1 |
о |
Рис :.i
Взнаковом разряде находится знак числа, при отрицатель ном значении используется код 1, при положительной величи не фиксируется код 0. В регистре (рис. 2.1) записано число —
0,101...01.
Вдругом классе цифровых машин положение запятой ука зывается для каждого числа — это машины с плавающей за пятой или с учетом порядков. Определение места запятой эк
вивалентно представлению числа N через его дробную цифро вую часть Л;лр и порядок р.
N — 2Р•Л’4', |
(2.4) |
,-де Л’’4 — О, Л/_, Л’ . . ■ • • N. да. N-i — 1; |
0. |
Дробная часть N 4' называется мантиссой числа N. Обычно мантисса Л/дрпо модулю меньше единицы (j Л/лр |< 1) и имеет свой знак, соответствующий знаку числа.
Величина порядка р, представляющая целое число, опреде ляет положение запятой в мантиссе. Группа порядка р имеет свой знак, характеризующий направление движения запятой в числе. С изменением порядка запятая как бы «плавает» в изображении числа.
На рис. 2.2 показана возможная запись числа двумя груп пами: группой мантиссы Л/Др и группой порядка р ,в разрядной сетке машины.
18
В соответствии с записью Л'др ——0,100...11; |
-г 10...I. |
Рассмотренная форма изображения числа в машине называет ся нормальной. Если первая цифра мантиссы ЛА’ Р равна еди
нице < Л ^ Р< lj, то представление числа N в этом случае
называется ненорм ализов аниым.
Врезультате арифметических операций с нормализованны ми числами может образоваться число в ненормализованной форме
Л/, — 2р• /У,Лр,
где |
= |
О, Л/_, N-., . ■ ■ N..k N ^ k ,, . . • Л'_„, |
и |
|
N - 1= |
• • - =N-k> N-(k Iи = '• |
авто |
В этом случае нормализация в машине осуществляется |
|||
матически за счет сдвига разрядов Л //1’ на к единиц влево и
уменьшения порядка р на величину к, т. е. NХ—‘2Р ~k■ |
где |
|
Д№ = 0, N-tk-i d |
•••ЛДт . Нормализованное представ |
|
ление чисел с порядками повышает точность вычислений в ма шине, так как сохраняется в разрядной сетке большое число значащих цифр. При сложении нормализованных чисел и ма шинах с плавающей запятой может возникнуть переполнение разрядной сетки, приводящее к образованию единицы слева от запятой. Такое переполнение устраняется сдвигом мантиссы на один разряд вправо и увеличением порядка на единицу. По добное приведение числа называется «нормализацией впра во». Переполнение более чем на один разряд встречается в ма шинах с плавающей запятой редко. Отсюда следует основное достоинство этих машин — широкий диапазон представления чисел за счет группы порядка.
Нормальная форма представления чисел усложняет, одна ко, реализацию операций в машине, так как становится необ ходимым выполнять дополнительные действия над порядками. Поэтому изображение чисел с плавающей запятой использует ся в универсальных цифровых машинах, где круг решаемых задач весьма разнообразен.
Некоторые ЭЦВМ могут (выполнять вычисления в нормаль ной или естественной форме, выбранной в зависимости от ха рактера задачи.
§ 2.3. Машинные коды
Исходные данные, а также промежуточные результаты в машинах могут быть положительными или отрицательными числами. Для изображения положительного знака использует ся двоичный код 0, для отрицательного — двоичный код 1, расположение которых примем перед старшим разрядом ман тиссы с отделением запятой. В числах с плавающей запятой
2* |
19 |
