
книги из ГПНТБ / Каретников, В. Н. Основы вычислительной техники учебное пособие
.pdf□ □ □ □ 0 |
□ ш |
□ В5 |
□ □ □ 191 |
□ ш |
н □ в |
□ □ ш □ 2 |
□ 9 |
в В? |
□ □ в m i |
и □ □□ос |
|
□ в □ |
в □ □ В9 |
Если начальная запись программы произведена в восьмеричной системе счисления, то для записи каждой восьмеричной цифры отводятся три участка — каждая восьмеричная цифра записывается в виде трехзначно го двоичного числа, т. е. в двоично-восьмеричной систе ме. В результате восьмеричные цифры будут записаны на перфокарте следующим образом:
□ |
□ |
а о |
■ |
□ |
с к |
□ |
□ |
91 |
Ш □ |
95 |
|
□ |
9 |
т |
■ |
■ |
|
□ ■ аз в в 97
Для пробивки отверстия на перфокартах служит специальный прибор — перфоратор. Он снабжен кла вишным устройством, взаимодействующим с системой
пуансонов, осуществляющих пробивку отверстий. При нажатии, например, клавиши, соответствующей деся
тичной |
цифре 9, включаются два крайних пуансона |
||
и т. д. |
Процедура набивки |
программ на |
перфоленты |
требует |
значительных затрат времени, |
поэтому она |
|
выполняется независимо от |
работы машины. Работа |
непосредственно с машиной начинается только с нача ла ввода готовых перфолент.
В настоящее время имеются машины, ввод програм мы в которые осуществляется непосредственно печата нием на специально встроенной печатной машине. При этом программист использует привычную десятичную
20
систему |
счисления, |
обычные символы арифметических |
|
действий |
(+ сложение, © — вычитание, х |
умноже |
|
ние, 0 — деление, / |
— возведение в степень, у |
— извле |
чение корня, > больше, с меньше и т. д.), обще
принятые |
символы |
функций |
(sin, |
cos, |
In, е и т. д .). |
Команды вводятся |
обычными |
словами: |
«выполнить», |
||
«печатать», |
«если», |
«то» и т. д. В |
процессе работы |
можно вводить коррективы. Результаты расчета печа таются автоматически. Появление машин такого типа знаменует новый, более высокий уровень развития ЭЦВМ, так как их широкое и успешное применение возможно только при простых формах взаимодействия человека и машины.
Запись чисел в ячейках памяти машины
ЦВМ по способу представления в них чисел под разделяются на машины с фиксированной запятой и машины с плавающей запятой.
В машинах с фиксированной запятой применяется естественная форма записи чисел — в виде последова тельности цифр, разделенных запятой на целую и дроб
ную части. |
Ячейка |
памяти такой |
машины |
состоит из |
знакового |
разряда |
(обозначим его |
нулевым |
номером) |
и цифровых разрядов (занумеруем |
их последователь |
ными цифрами 1, 2, 3, ...). Некоторое постоянное коли чество цифров'ых разрядов отведено для хранения це лой части числа, остальные цифровые разряды пред
назначены для изображения его |
дробной |
части. На |
рис. 2 схематически изображена |
ячейка с |
четырьмя |
разрядами для хранения целой части и восемью разря дами для хранения дробной части числа. Обычно ячей ка памяти машины содержит около сорока цифровых разрядов.
При изображении положительного числа в знаковом
разряде ячейки |
стоит нуль, а отрицательного — едини |
|
ца. На рис. 2 |
показано |
заполнение разрядов ячейки |
для числа +1100,011001 |
в двоичной системе счисления. |
Применяя машину с фиксированной запятой, нужно всегда помнить о возможности переполнения разрядной сетки. Во избежание этого все величины, входящие в решаемую задачу, необходимо заранее умножить на
масштабные коэффициенты — множители, подобранные
21
таким образом, чтобы в процессе вычислений разряд ная сетка не переполнялась. Подбор масштабных коэф фициентов весьма трудоемок. Для облегчения подбора коэффициентов в большинстве случаев запятая фикси руется перед первым цифровым разрядом ячейки, сразу
Зной Цолая иасть Дм>5иао ч а с т
!'В|( 1 I 1 I 5 I о’ || ОI ( I 1 I ОI ОI I I ОI о
о 1 Г з Г Г,ТТ 1 т а и и и а
Рис.. 2. Схема ячейки памяти машины с фикси рованной запятой
после знакового разряда, так, что в ячейке могут быть записаны только правильные дроби, в которые должно быть превращено любое число. Таким образом, диапа зон положительных чисел, который может быть запи сан в ячейке памяти таких машин, сравнительно не велик. Например, в ячейке, изображенной на рис. 2,
могут быть представлены |
числа, начиная с 0,00000001 |
||||
и кончая |
1111,11111111 |
(в |
десятичной системе это со |
||
ставит с |
1 |
по 15 255 |
). |
Число, |
абсолютная величи |
|
256 |
256 |
|
|
|
на которого меньше 0,00000001 |
в такой ячейке |
будет представлено в виде нуля.
Отличные от нуля числа, воспринимаемые машиной как нуль, называются машинными нулями.
Применение машин с фиксированной запятой со пряжено с необходимостью использования масштаб ных коэффициентов, что затрудняет работу на них.
Машины с плавающей запятой лишены этого недо статка. В них каждая ячейка памяти, кроме знакового и цифрового разрядов, имеет еще некоторое количество дополнительных разрядов, показывающих положение запятой.
В ячейке машины с плавающей запятой число N за писывается в виде произведения мантиссы пг на осно вание принятой системы счисления в степени р. Пока затель степени р называется порядком числа N. Знак
мантиссы записывается в знаковый разряд ячейки, а мантисса — в цифровые разряды. Первый разряд ука
22
зателя служит для хранения знака порядка, а осталь ные его разряды — для хранения абсолютной величины порядка (рис. 3). Таким образом, числа записываются в следующем виде:
N=m-IQP,
где 10 — основание |
принятой |
системы |
счисления (лю |
||
бое число). |
|
|
|
|
|
ЗиаиоЗыи |
, |
тм З и |
|
Кип»™*!, |
|
.спад |
Циотые |
|
пмошсиии |
юпотои |
|
. |
________. ______________________ ____ .а _____________________________ — — , |
|
_ |
||
« |
i а » * 5 |
t 7 I J |
и и « / и и <5 |
{6 17 . |
|
|
|
|
Знак' |
4-------------- |
------------- |
|
|
|
nweSuo |
ПороЗси |
Рис. 3. Схема ячейки памяти машины с плавающей запятой
Если выполняется условие
то запись |
числа в таком виде называется н о р м а л и |
|
з о в а н н о й (иначе говоря, |
число N нормализовано). |
|
При этом |
первый цифровой |
разряд ячейки в случае |
двоичной записи содержит всегда единицу. Нормализованная запись чисел снижает погрешность
в их изображении (после запятой нулей не бывает, поэтому значащие цифры могут занимать все цифровые разряды).
На |
|
рис. |
|
4 |
показана |
схема . |
записи |
|
числа |
||||||||
+ 1010010,11 = |
|
+0,10100101 • 10т |
в |
ячейке |
памяти |
ма |
|||||||||||
шины с плавающей запятой. |
|
|
|
|
|
|
|
|
|
|
|||||||
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
О |
1 |
J |
з |
К |
5 |
I |
7 |
& |
9 |
10 |
II |
(2 |
IS |
U |
15 |
1» |
О |
Рис. 4. Схема записи числа + 1010010,11 в ячейке памяти машины с плавающей запятой
Диапазоны чисел, представляемых в ячейках памяти машины
Самое большое положительное число, которое мож но записать в ячейке памяти машины с фиксированной
23
запятой, имеющей п цифровых разрядов для целой ча
сти числа и и цифровых разрядов для дробной части, равно
кт |
=1 ... |
1, |
11 ... |
11=10 |
... 0, |
00 ... 00- |
0,00 ...01 |
max |
'------ .------- |
• --------- |
.--------- |
•-------.------- |
• |
------- .------ - |
------- -— • |
|
п цифр |
|
v цифр |
п-\ 1 |
цифр |
v цифр |
v цифр |
ИЛИ |
|
|
|
|
|
|
|
N max =2"—2 - \
Самое малое положительное число, которое может
хранить такая ячейка,
N min= 0... 0,00... 01,
или
Таким образом, диапазон чисел, представляемых в ячейке памяти машины с фиксированной запятой, опре деляется неравенством
2~v< | N | <2"—2 -' .
Самое большое положительное число, которое мож но записать в ячейке памяти машины с плавающей за пятой, имеющей р цифровых разрядов для изображе ния абсолютной величины мантиссы и р разрядов для изображения абсолютной величины порядка,
|
р цифр |
Nmax=0,H |
1 Ы 0 1 ■л , |
Р цифр |
|
или
Nmax~ ( \ —2 |1)-22?- 1 .
Самое малое нормализованное число, которое может хранить такая ячейка, следующее:
W«j«=0,10 ... 0- 10- ’ - ' = 2-1 .2-2Р+1 = 2 - 2Р,
или
N, — 9 - 2 ?
^min "
Таким образом, диапазон чисел, представляемых в ячейке памяти машины с плавающей запятой, опреде ляется следующим неравенством:
2~2Р < | N | < (1 - 2 - ^ ) .2 2Р-1 .
24
Пусть ячейка памяти машины состоит из 43 ячеек («Стрела»). При запятой, фиксированной после знако вого разряда (п= 0, о = 42), диапазон представляемых
чисел был бы
2~42< | N | < 1 - 2 - 42 . |
|
|
|
При плавающей запятой (р = 35, р= |
6) |
имеем сле |
|
дующий диапазон представляемых чисел: |
|
|
|
2 -и< |
| N | < ( 1 - 2 - з 5)-2г>3. |
|
|
В правой части последнего неравенства имеем де |
|||
вятнадцатизначное |
десятичное число, |
а |
в левой — |
очень маленькую дробь, обеспечивающую практически любую точность счета. Такой диапазон чисел является достаточным для решения любых задач.
В случае применения машины с фиксированной за пятой при использовании всех 42 разрядов ячейки для представления целой части можно изобразить только тринадцатизначное десятичное число. К тому же в этом случае нельзя было бы изображать дробную часть чисел. При задалживании некоторого количества раз рядов для дробной части предельная величина целой части будет значительно меньше.
Из приведенного примера видно, насколько шире диапазон представляемых чисел для машины с плаваю щей запятой, чем для машины с фиксированной запя той.
Широта диапазона представляемых чисел для ма шин с плавающей запятой делает ненужным исполь зование масштабных коэффициентов. Правда, следует помнить, что это преимущество достигнуто за счет присоединения к каждой ячейке дополнительных раз рядов и усложнения правил выполнения арифметиче ских операций, т. е. за счет усложнения конструкции
иувеличения ее стоимости.
4.Арифметические действия над нормализованными
числами
Как отмечалось выше, в машинах с плавающей за пятой применяется нормализованная запись чисел. От мечалось также, что правила выполнения арифметиче ских операций при этом усложняются. Рассмотрим эти правила.
25
Сложение (вычитание) двух нормализованных чи сел выполняется следующим образом. Сначала вырав ниваются порядки этих чисел, т. е. число, порядок ко торого меньше, денормализуетея так, чтобы его поря док стал равен порядку второго числа, после чего ман тиссы обоих чисел складываются (вычитаются) по правилам сложения (вычитания) чисел с фиксирован ной запятой. Сумма (разность) мантисс принимается за мантиссу суммы (разности), а порядок большего по абсолютной величине числа — за порядок суммы (раз ности). Результат нормализуется.
Умножение (деление) двух нормализованных чисел осуществляется следующим образом: умножаются (де лятся) мантиссы. Произведение (частное) мантисс при нимается за мантиссу произведения (частного), а сум ма (разность) порядков первого и второго чисел — за порядок произведения (частного). Результат нормали зуется. Например, в десятичной системе:
1) 0,125 -10 -5 + 0,37-10”3 = 0,00000125 +
+0,00037 = 0,00037125 = 0,37125-КН»;
2)0,37 • 10 -3—0,125-10 -5 = 0,00037— —0,00000125 = 0,00036875 = 0,36875 • 10~3;
3) |
0,149106Х 0,912-10 -3 = 0,135888-103; |
4) |
0,9894-106 : 0,5-104 = 1,9788-102 = 0,19788-103; |
вдвоичной системе:
1)0,101 • 10-10+ 0 ,1 11 - Ю-100 = 0,0010100+0,0000111 =
=0,0011011=0,1101-10-10;
2)0,101-10100—0,11101-1010 = 1010—11,101 =
=110,011 = 0,110011 • 10й;
3) 0,110001 •10100Х (—0,10011001 •10- ") =
=—0,01110101001001 - 10> = —0,11101011001001;
4)(—0,110111 - 10-10) : 0,101 = —0,1011 • 10~10.
Аналогичным образом выполняются арифметиче
ские операции над числами в восьмеричной, шестнад цатеричной и других системах счисления.
Выполнение всех арифметических операций на вы числительной машине сводится к операциям сложения.
Это достигается путем применения специальных кодов: прямого, обратного и дополнительного.
Прямым кодом двоичного числа
H = ±fliQ2--- Q,i' й п л а п \ Ъ ... |
а п + т » |
представленного в форме с фиксированной запятой, на
26
зывается целое (к-\-п-\-т)-разрядное число (/с>1),
определяемое по формуле
|
00 |
... О |
а,а2 ... |
a„an,i ... |
ап , |
при а > О, |
|
I .ft _ |
кнулей |
я ,а2 ... |
апап+1 ... |
а„.|.т |
при я <0 . |
||
|м|пР— ц |
_ |
| |
|||||
|
к единиц |
|
|
|
|
||
Старшие k разрядов прямого кода числа называются |
|||||||
знаковыми, |
а |
остальные |
разряды — цифровыми. |
||||
Обратным кодом двоичного числа |
|
|
|||||
|
й = ±а\а.2... dn, dn.\ I, 0-п+2>•••> Р’ПЛ-т ) |
представленного в форме с фиксированной запятой, на
зывается целое |
(Л+н+ m )-разрядное число (k> 1), |
|||||
определяемое по формуле |
|
|
|
|||
00 |
... |
0 |
а ха%... |
апап+1 ... |
ал+,„ |
при а>0, |
k нулей |
a id■>... |
anan+i ... |
ап+т при а < 0 , |
|||
11 |
... |
1 |
||||
к единиц |
|
|
|
|
||
где |
_ |
|
1— a t (i = 1, 2, .... |
п-\-т). |
||
Старшие |
а г |
= |
||||
k |
разрядов |
обратного |
кода |
называются |
знаковыми, а остальные разряды — цифровыми. Дополнительным кодом двоичного числа
a= ±a\(i2...an, dn+i, а п+2, •••, йп\т,
представленного в форме с фиксированной запятой, на
зывается |
целое |
(/г-f-n+m) -разрядное число |
|
|||||
определяемое по формуле |
|
|
|
|
|
|||
|
|
00 ... 0 |
dia2 ... |
11 |
••• |
ап+,„ при |
*о, |
|
|
|
k нулей |
|
|
|
ап\т |
|
|
|
|
11 ••• 1 |
••• |
« А + 1 |
••• |
|
|
|
[ й ] д 0 П --- |
k единиц |
—1-00 ... 01 |
при а К0 |
, |
|
|||
|
|
|
|
|||||
|
|
|
k+n + m -l |
|
|
|
|
|
|
|
|
нулей |
|
|
|
|
|
где |
|
at = 1—d[ ( i = l , 2, |
..., |
н+ m ). |
|
|
||
|
|
|
|
|||||
Старшие k разрядов дополнительного кода называ |
||||||||
ются |
знаковыми, |
а остальные разряды — цифровыми. |
||||||
На |
практике |
прямой, |
обратный и дополнительный |
|||||
коды |
чаще всего |
используются |
с одним |
или |
с двумя |
27
знаковыми разрядами, причем коды с двумя знаковыми разрядами называют модифицированными.
Используя обратный или дополнительный код, опе рации вычитания и сложения чисел с различными зна ками можно свести к простому сложению кодов чисел.
При алгебраическом сложении двух двоичных чисел с использованием обратного кода положительные сла гаемые представляются в прямом коде, а отрицатель ные— в обратном и производится арифметическое сум мирование этих кодов, включая разряды знаков, кото рые при этом рассматриваются как разряды целых еди ниц. При возникновении переноса из разряда знака единица переноса прибавляется к младшему разряду суммы кодов (такой перенос называется круговым). В результате получается алгебраическая сумма в пря мом коде, если эта сумма положительна, и в обратном коде, если она отрицательна.
При алгебраическом сложении двух двоичных чисел с использованием дополнительного кода положитель ные слагаемые представляются в прямом коде, а от рицательные — в дополнительном и производится ариф метическое суммирование этих кодов, включая разряды знаков, которые при этом рассматриваются как разря ды целых единиц. При возникновении переноса из разряда знака единица переноса отбрасывается. В ре зультате получается алгебраическая сумма в прямом коде, если эта сумма положительна, и в дополнитель ном коде, если эта сумма отрицательна.
Таким образом, операция вычитания, рассматривае мая как алгебраическое сложение, может быть замене на операцией преобразования прямых кодов отрица тельных чисел в обратные или дополнительные и про стым арифметическим сложением соответствующих кодов чисел. Если результат получается в обратном или дополнительном коде (алгебраическая сумма отри цательна), то в случае необходимости он может быть переведен в прямой код.
В качестве примера покажем алгебраическое сло жение чисел (+ 10101) и (— 1001) с использованием обратного кода. Положительное слагаемое 10101 пред
ставляем в прямом коде, принимая |
знаковый разряд |
из одной цифры ( 6=1) и учитывая, |
что цифровой раз |
ряд содержит 5 цифр {п — 5): |
|
28
[10101]п* =010101 (Л=1, п = Ъ).
Отрицательное слагаемое представляем в обратном
коде [ 1001] обР = 1Ю110 (й = 1, п = 5) . (Здесь мы пред
варительно произвели сдвиг второго двоичного числа для выравнивания цифровых разрядов ( п = 5), дописав
нуль между цифровым и знаковым разрядами). Производим арифметическое суммирование получен
ных кодов, включая разряды знаков: |
|
, |
|
||||||
Единицу переноса из знакового раз |
010101 |
||||||||
ряда добавили к младшему |
цифровому |
+ |
110110 |
||||||
разряду. |
Сумма |
получилась |
положи |
|
1001011 |
||||
тельной, |
значит |
в прямом |
коде число, |
|
1 |
||||
|
001100 |
||||||||
обозначающее сумму, будет 1100. |
|
|
|||||||
|
|
|
|||||||
При |
использовании дополнительного |
|
|
||||||
кода порядок |
действий |
остается почти |
|
|
|||||
таким же. В этом случае дополнитель |
|
|
|||||||
ный код отрицательного слагаемого |
[ 1001 ] 1доп == 110111, |
||||||||
т. е. больше |
обратного |
кода |
на |
единицу |
младшего |
разряда. Поэтому при арифметическом сложении полу ченных кодов единица переноса из знакового разряда не добавляется к младшему цифровому разряду, а отбрасывается.
Умножение на вычислительной машине обычно сво дится к последовательности операций прибавления множимого к сумме уже ранее вычисленных частных произведений и сдвига получаемых сумм вправо на один разряд. Код множителя разряд за разрядом (на чиная с младшего) подается на элемент схемы, прове ряющей наличие в поданном разряде 1 или 0. Если в данном разряде множителя стоит 1. производится при бавление кода множимого к сумме, стоящей в сум
маторе. Затем производится сдвиг новой суммы впра во на один разряд. Если в данном разряде множителя стоит 0, прибавления множимого не производится, а лишь выполняется сдвиг кода сумматора вправо на один разряд.
Деление на вычислительной машине сводится к че редованию операций вычитания делителя из делимого или из остатка от предыдущего вычитания и сдвига остатка влево на один разряд. При этом разряды част ного получаются последовательно, начиная со стар шего разряда.
29