Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Каретников, В. Н. Основы вычислительной техники учебное пособие

.pdf
Скачиваний:
16
Добавлен:
19.10.2023
Размер:
3.82 Mб
Скачать

□ □ □ □ 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

О

Рис. 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

Соседние файлы в папке книги из ГПНТБ