
книги из ГПНТБ / Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие
.pdf
|
|
|
|
|
|
Т а б |
л |
и ц а |
2-1 |
|
Десятичное изображение |
Двоичное изображение |
Восьмеричное изображение |
Шестнадца тиричное изображение |
Десятичное изображение |
Двоичное изображение |
Восьмеричное |
изображение |
Шестнадца тиричное |
изображение |
|
0 |
0 |
0 |
0 |
15 |
п и |
17 |
|
F |
|
|
1 |
1 |
1 |
1 |
16 |
10 000 |
20 |
|
10 |
|
|
2 |
10 |
2 |
2 |
17 |
10 001 |
21 |
|
11 |
|
|
3 |
11 |
3 |
3 |
18 |
10010 |
22 |
|
12 |
|
|
4 |
100 |
4 |
4 |
1 |
0,1 |
0,4 |
0,8 |
|||
2 |
||||||||||
|
|
|
|
|
|
|
|
|
||
5 |
101 |
5 |
5 |
1 |
0,01 |
0,2 |
0,4 |
|||
4 |
||||||||||
|
|
|
|
|
|
|
|
|
||
6 |
п о |
6 |
6 |
1 |
0,001 |
0,1 |
0,2 |
|||
8 |
||||||||||
|
|
|
|
|
|
|
|
|
||
7 |
111 |
7 |
7 |
7 |
0,111 |
0,7 |
0, |
Е |
||
8 |
||||||||||
|
|
|
|
|
|
|
|
|
||
8 |
1000 |
10 |
8 |
3 |
0,011 |
0,3 |
0,6 |
|||
8 |
||||||||||
|
|
|
|
|
|
|
|
|
||
9 |
1001 |
11 |
9 |
1 |
0,0001 |
0,04 |
0,1 |
|
||
16 |
|
|||||||||
|
|
|
|
|
|
|
|
|
||
10 |
1010 |
12 |
А |
7 |
0,0111 |
0,34 |
0,7 |
|
||
16 |
|
|||||||||
|
|
|
|
|
|
|
|
|
||
11 |
1011 |
13 |
В |
1 |
0,0000! |
0,02 |
0,08 |
|||
32 |
||||||||||
|
|
|
|
|
|
|
|
|
||
12 |
1100 |
14 |
Ü |
1 |
0,000001 |
0,01 |
0,04 |
|||
64 |
||||||||||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
1 |
|
|
|
|
|
|
13 |
1101 |
15 |
D |
Зт |
11,001 |
3,1 |
|
3,2 |
|
|
14 |
1110 |
16 |
F. |
4 —— |
100,1 |
4,4 |
4,8 |
|
||
|
|
|
|
2 |
|
|
|
|
|
4— 333 |
.49 |
В восьмеричной системе употребляются восемь цифр: О, 1, 2, 3, 4, 5, 6, 7. Любое число в восьмеричной системе представляется последовательностью цифр
|
|
Х = ß<? ß(7—1‘ ‘ ' ßl ßo ß—1ß—2‘ |
> |
0 до 7. Этой |
|||||||||||||
в которой ßi могут принимать значения от |
|||||||||||||||||
записи |
соответствует |
|
разложение числа х |
по |
степеням |
||||||||||||
числа |
восемь |
|
|
с приведенными |
ниже |
коэффициен |
|||||||||||
тами: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* = |
|
ß<7 • 87 + |
|
ß(7_ 1• 87-1 4 |
|
1- ß 1-8I + |
( - |
|
) |
|||||||
|
+ |
ßo |
• |
8 |
° + |
ß |
_ , • |
|
число• |
8 |
- ? + |
• |
• • |
3 |
|||
|
|
|
|
|
8 “ 1 4 ß _ 2 |
|
|
|
2 |
|
|||||||
Например, |
|
восьмеричное |
|
|
|
|
|
|
|
|
(703,04)8 = 7.824-0-8’+ 3 -8 °+ 0 -8 '1+4-8_2 = (451,0625)10.
В шестнадцатиричной системе для изображения чи сел употребляется 16 цифр от 0 до 15. При этом, чтобы одну цифру не изображать двумя знаками, приходится вводить специальные обозначения для цифр, больших девяти. Обозначим первые десять цифр этой системы цифрами от 0 до 9, а старшие пять цифр— латинскими буквами: десять—А, одиннадцать — В, двенадцать— С, тринадцать — D, четырнадцать — Е, пятнадцать — F.
Записи произвольного числа в шестнадцатиричной системе в виде последовательности цифр
|
|
^ = V, Ѵ#_1 **- V! То Т-1 |
- |
|
|
где уі может принимать любые из 16 значений |
от 0 до |
||||
F (пятнадцать), соответствует разложение числа х по |
|||||
степеням |
числа |
16 с указанными ниже |
коэффициента |
||
ми: |
|
|
|
|
|
х |
= |
У г |
+ т , _ 1- 16<- 1 4--------! - ѵ |
- 161 + |
|
|
+ |
Yo •16° + 7-Г 16“ ' + Y_2 • 16~2+ • • • |
(2-4) |
||
Например, шестнадцатиричное число |
|
|
(В2Е,4)и = В -162+ 2 -161 -f Е - 16° + 4- 16_1= (2862,25)t0.
Основание любой системы счисления, записанное в этой же системе, имеет вид 10 (число два в двоичной системе есть 10, число восемь в восьмеричной системе есть 10 и т. д.). Общие методы перевода чисел из одной системы в другую будут изложены в следующем параг рафе. Здесь мы ограничимся только рассмотрением пра вил преобразования восьмеричных и шестнадцатиричных
50
чисел в двоичные и наоборот. Эти правила исключитель но просты, поскольку основания восьмеричной и шест надцатиричной систем есть целые степени числа два: 8= 23, 16= 24.
Для перевода восьмеричного числа в двоичную фор му достаточно заменить каждую цифру восьмеричного числа соответствующим трехразрядным двоичным чис лом. Таким же образом для перехода от шестнадцати ричной системы к двоичной каждая цифра шестнадца
тиричного числа заменяется |
соответствующим четырех |
||||||
разрядным |
двоичным |
|
числом. При этом |
отбрасывают |
|||
ненужные |
нули. Например, |
восьмеричное |
число 306,4 |
||||
в двоичной форме записи имеет вид: |
|
||||||
|
3 |
0 |
|
5 |
, 4 |
=(11000101,1),, |
|
0П |
000 |
ТоТ, 100 |
|
||||
а шестнадцатиричное |
число |
7В 2, Е в двоичной системе |
|||||
запишется следующим образом: |
|
||||||
7 |
В |
2 |
, |
|
Е |
=(11110110010,111),. |
|
0П1 |
ГоТ 1 0ÖTÖ, |
Гііо |
|
Для перехода от двоичной к восьмеричной (или ше стнадцатиричной) системе поступают следующим обра зом: двигаясь от запятой влево и вправо, разбивают дво ичное число на группы по три (четыре) разряда, допол няя при необходимости нулями крайние левую и правую группы. Затем каждую группу из трех (четырех) разря
дов заменяют соответствующей |
восьмеричной |
(шестнад |
|||||
цатиричной) цифрой. |
|
. . . |
|
і |
|||
Приведем примеры: |
|
|
|||||
а) Перевод двоичного числа |
1101111001, 1101 в вось |
||||||
меричное: |
|
|
|
|
|
|
|
001 |
101 |
ІИ |
001, |
ПО |
100 =(1571,64),; |
||
Т |
~5~ |
~7~ |
Т , |
6 |
Т * |
* |
100111 в |
б) Перевод |
двоичного |
числа 11111111011, |
|||||
шестнадцатиричное: |
|
|
|
|
|
||
0111 |
11111 |
1011, |
1001 |
1100 = |
(7FB,9C)J6. |
||
7 |
F |
|
В |
'1 Г |
~С |
|
|
Двоичные числа, наборы цифр которых разбиты на группы по три (четыре) разряда, а крайние группы при необходимости дополнены нулями, можно считать вось
4! |
51 |
меричными |
(шестнадцатиричными) |
числами, |
й которых |
|
цифра |
каждого разряда записана |
в двоичной системе |
||
в виде |
трех |
(четырех)разрядного |
двоичного |
числа. Та |
кие формы записи чисел носят название двоично-восьме ричной и двоично-шестнадцатиричной системы. Они на зываются также двоично-кодированными системами.
В вычислительных системах также применяются спе циальные формы кодирования десятичных чисел. Этот вопрос будет рассмотрен ниже.
В настоящее время для большинства вычислительных машин основной системой счисления является двоичная. Двоичная система и двоичный алфавит используются во многих машинах для представления и хранения чисел и команд и при выполнении арифметических и логических операций.
Восьмеричная и шестнадцатиричная системы ис пользуются при составлении программ для более корот кой и удобной записи двоичных кодов — команд, так как эти системы не требуют специальных операций для пе ревода в двоичную систему.
Числовые данные, необходимые для решения задачи, вводятся в машину обычно в десятичной системе в ви де специальных кодов. Перевод десятичных чисел в дво ичные выполняется машиной.
Результаты расчета выводятся из машины в десятич ной системе. Перевод данных из двоичной системы в де сятичную производится машиной.
При выводе из запоминающего устройства команд они печатаются в шестнадцатиричной (восьмеричной) системе. Числа также могут выводиться в шестнадцати ричной (восьмеричной) системе.
2-2. Д В О И Ч Н А Я А Р И Ф М Е Т И К А
Правила выполнения арифметических действий над двоичными числами задаются таблицами двоичных сло жения, вычитания и умножения:
Таблица двоичного |
Таблица двоичного |
Таблица |
|
сложения |
вычитания |
двоичного |
|
0 + 0 = 0 |
|
0—0 = 0 |
умножения |
|
0 X 0 = 0 |
||
0 + 1 = 1 |
Л |
1—0=1 |
О Х 1=С |
1 + 0 = 1 |
1— 1 =0 |
1 X 0 = 0 |
|
1 + 1 = 1 + . |
10— 1= 1 |
1 x1 = 1 |
|
+единица переноса |
|
|
|
в старший |
разряд |
|
|
52
Правила арифметики во всех позиционных системах аналогичны. Поэтому сложение двух чисел в двоичной системе можно выполнять столбиком, начиная с младше го разряда, подобно тому, как мы это делаем в десятич ной системе. В каждом разряде в соответствии с прави лами, указанными таблицей двоичного сложения, про изводится сложение двух цифр слагаемых или двух этих цифр и единицы, если имеется перенос из соседнего младшего разряда. В результате получается цифра со ответствующего разряда суммы и, возможно, также еди ница переноса в старший разряд. Приведем пример на сложение двух двоичных чисел.
Переносы 11 111 |
|
110111.01 |
55,25 |
++
10011,10 |
19,5 |
1001010,11 |
74,75 |
0 |
|
Справа показано сложение тех же чисел, представлен ных в десятичной системе.
Вычитание чисел в двоичной системе выполняется подобно вычитанию в десятичной системе. При вычи тании в данном разряде при необходимости занимается единица из следующего старшего разряда. Эта занимае мая единица равна двум единицам данного разряда. За нимание производится каждый раз, когда цифра в раз ряде вычитаемого больше цифры в том же разряде умень шаемого. Поясним сказанное примером:
11011,10
—1101,01
1110.01
Умножение двоичных многоразрядных чисел произ водится путем образования частичных произведений и последующего их суммирования. В соответствии с таб лицей двоичного умножения каждое частичное произве дение равно нулю, если в соответствующем разряде множителя стоит нуль, или равно множимому, сдвину тому на соответствующее число разрядов влево, если в разряде множителя стоит единица. Таким образом, операция умножения многоразрядных двоичных чисел сводится к операциям сдвига и сложения. Положение запятой определяется так же, как при умножении деся
53
тичных чисел. Сказанное поясняется примером:
1 0 1 1 ,1 X 1 0 1 ,0 1 = 111100,011 |
^ |
10111 |
|
А |
10101 |
|
|
10111 |
+ |
|
00000 |
10111 |
||
|
00000 |
|
|
10111 |
|
|
111100011 |
Деление чисел в двоичной системе производится ана логично делению десятичных чисел. Достаточно рассмот реть деление двух целых двоичных чисел, так как дели мое и делитель всегда могут быть приведены к такому виду путем перенесения запятой в делимом и делителе на одинаковое число разрядов и дописывания нулей в недостающие справа разряды.
Особенности выполнения деления двоичных чисел по ясняются примером:
1100,011:10,01= ? _1100011 |
I10010 |
, 10Ё.9___ |
101,1 |
__11011
10010
10010
10010
00000
Благодаря простоте правил двоичного сложения, вы читания и умножения применение в ЦВМ двоичной си стемы счисления позволяет упростить схемы арифмети ческих устройств.
Перейдем к рассмотрению правил перевода чисел из одной системы счисления в другую. Необходимость в та ких преобразованиях возникает из-за того, что ЦВМ работает в двоичной системе счислений, программа за писывается в шестнадцатиричной или восьмеричной сис теме, а подготовка исходных данных для расчетов и вы дача результатов расчета из машины производятся в де сятичной системе.
Обычно преобразования чисел из одной системы счи сления в другую выполняются автоматически устройст вами машины. Однако при программировании задач, а также при вмешательстве оператора в процесс реше ния задачи на ЦВМ может возникать необходимость
54
ручного перевода отдельного числа или небольшой груп пы чисел из одной системы в другую.
Правила перевода зависят от того, какая арифме тика используется при выполнении арифметических опе раций, связанных с преобразованием чисел, — арифмети ка той системы счисления, в которой представлено исход ное число, или арифметика системы счисления, в кото рую число переводится.
Пусть необходимо перевести число у , представленное в системе счисления с основанием s:
У — &г ®г—1&г—2■ • ■ Bi 8Q8—1• • • 8_<7
в /і-систему, выполняя нужные для этого арифметичес кие действия в новой /г-системе. Для этого достаточно число представить в виде соответствующей суммы сте пеней s:
У — 8Г • Sr -)- &г—1’ Sr~ 1“Ь • • * “Ь 8Х • S1 ~f- 80S° -f-
+8- r s - 1 Н --------h
вкоторой основание s и все коэффициенты е< выражены
вновой /г-системе, и выполнить в /г-системе все необхо димые для вычисления этой суммы действия.
Пример 1. Перевести в десятичную систему шестнад цатиричное число у — (2ЕЪ,А)ІВ. Для этого представля ют у в виде
у = 2 -162 h 141б' + 5> 16°+10* 16_1 = (741,625)10-
Пример 2. Перевести в десятичную систему двоич ное число г = ( 11011,101)2:
z = i . 2 4+ i- 2 3+ o .2 a+ ь ^ + ь г ^ ь г -1 +
+ 0 • 2 2Ң-1 3 = (27,625)10.
Рассмотрим теперь перевод числа из s-системы в /г-систему посредством арифметических операций исход ной s-системы. В этом случае правила для перевода це лых чисел и дробей различны.
Перевод целых чисел. Пусть целое число у, представ леное в s-системе, требуется перевести в /г-систему. Ис комая запись числа у в А-системе имеет вид:
у = ог ст,_, • • -о0 = or-hr + |
-hr~l Ң------- |
1- о0-А°. |
55
Разделив у на /г, получим:
= а. hr |
+ ar - i’h' N -------b о, -f |
Оц |
h ' |
Отсюда
У = У\к f G0,
где у 1 есть частное от деления числа у на основание си стемы h, а младшая цифра искомого представления чис ла у в /г-системе есть остаток от этого деления.
Если теперь разделить у\ на /г, то получим:
Уі |
1 г -2 |
, |
1 г - |
— |
= о -п |
+ °г -Г Н + ••• + + |
h
В силу
Уі = У*Ь + ая,
остаток от второго деления есть цифра стг следующего разряда в представлении числа у в h-системе и т. д.
Таким образом, получаем правило: для перевода це лого числа из s-системы счисления в /г-систему нужно последовательно делить это число и получаемые частные на основание h новой системы, представленное в старой s-системе, до тех пор, пока частное не станет меньше h. Старшей цифрой в записи числа в /г-системе служит по следнее частное, а следующие за ней цифры дают остат ки, выписываемые в последовательности, обратной их получению.
В качестве примера переведем десятичное число 73 в двоичную систему:
73I 2
~зГ
72I |
— |
Ё |
I 2 |
|
|
|
IF |
О— ,
18 —
О
О 1 1
О
(73)І0 = (1001001 )г .
Перевод дробных чисел. Перевод в /г-систему правиль ной дроби z, представленной в системе счисления с осно-
56
ваннем s, означает запись этой дроби в виде
2 = 0, о |
о_2• • -о |
- • • = CT_ J • Іі~х + о_2- h~2+ |
||
|
Н---- i-a _ q ' h ~ q -\--- |
|
||
Умножая 2 на ft, получаем: |
|
|
||
zh = о_ j -)- о |
2h +•••-+- Q_qh |
*~Ь • • • + |
= o_i + Zj, |
|
где а_і и 2 і соответственно целая |
и дробные части этого |
|||
произведения. При этом |
целая |
часть о_і |
есть старшая |
цифра в представлении числа 2 в /і-системе.
Если теперь умножить на h правильную дробь z\, то целая часть произведения дает следующую цифру а-2 в представлении числа в h системе.
Следовательно, можно сформулировать правило: для перевода правильной дроби из s-системы в систему счис ления с основанием h нужно умножить исходную дробь и дробные части получающихся произведений на основа ние h, представленное в старой s-системе. Целые части получающихся произведений дают последовательность цифр в представлении дроби в h-системе.
В качестве примера переведем десятичную дробь 0,1875 в двоичную систему:
0,1875
X _______ 2
х ° ’375° (0 , 1875)10 = (0 ,0011)*
0,7500
X _______ 2
1,5000
X_______ 2
1,0000
Обычно перевод дробей из одной системы в другую производят приближенно.
При переводе неправильной дроби переводят отдель но целую и дробную части, руководствуясь соответству ющими правилами.
2-3. П Р Е Д С Т А В Л Е Н И Я Ч И С Е Л В Ц В М С Ф И К С И Р О В А Н Н О Й И П Л А В А Ю Щ Е Й ЗА П Я Т О Й
Разряд двоичного числа представляется в ЦВМ неко торым техническим устройством, например триггером, двум различным состояниям которого приписывают зна-
57
чения 0 и 1. Набор таких устройств, предназначенный для представления в машине многоразрядного числа (слова), называется регистром. На рис. 2-1 схематично представлена структура такого регистра для представ ления п-разрядного двоичного числа. Отдельные запо минающие элементы регистра пронумерованы на рисун ке цифрами от 0 до п—1 (всего п разрядов).
Требования к точности вычислений определяют выбор числа разрядов. Вообще говоря, в ЦВМ путем соответст вующего увеличения числа разрядов может быть получе на любая точность вы
|
|
1 |
числений, |
однако это |
|||
10 |
12 3 |
п-2 п-/, |
сопряжено |
с |
увеличе |
||
нием количества |
аппа |
||||||
|
п элементов |
ратуры. |
Хотя |
обычно |
|||
Рис. 2-1. Структура двоичного |
точность в |
7—8 деся |
|||||
тичных |
разрядах |
до |
|||||
|
регистра. |
статочна для представ |
|||||
ных |
расчетов, |
|
ления |
исходных |
дан |
||
вычисления на ЦВМ выполняются с 9— |
10, а в ряде случаев с 15—16 десятичными разрядами для уменьшения потери точности от ошибок округления.
В ЦВМ применяют две формы представления чисел: представление чисел с фиксированной запятой («естест венная форма») и представление чисел с плавающей за пятой («полулогарифмическая форма»).
При представлении чисел с фиксированной запятой положение запятой закрепляется в определенном месте
\относительно разрядов числа и сохраняется неизменным для всех чисел, изображаемых в данной разрядной сет ке машины. Обычно запятая фиксируется перед старшим разрядом или после младшего. В первом случае в раз рядной сетке машины могут быть представлены только числа, которые по модулю меньше единицы, во втором— только целые числа.
Для кодирования знака числа используется «знако вый» разряд (нулевой на рис. 2-1). Нуль в этом разряде соответствует плюсу, а единица — минусу.
На рис. 2-2 в качестве примера показана разрядная сетка машины («формат данных») для представления 32-разрядных (включая знак) чисел с фиксированной за пятой для случаев закрепления запятой перед старшим и после младшего разряда.
На разрядной сетке указан вес каждого разряда. На
58