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

книги из ГПНТБ / Михельсон В.С. Элементы вычислительной математики учебное пособие для электроприборостроительных техникумов

.pdf
Скачиваний:
19
Добавлен:
29.10.2023
Размер:
7.59 Mб
Скачать

так как

(0 ,00111111001)2 = 1 — (0 , 11000000111)2.

Итак,

(0 , 10101010111)2

( 0 , 1110101)2 =

— ( 0 , 00111111001)2

или

 

 

1367

117

505

2048

128

2048

Наряду с дополнительными кодами в некоторых вычислительных машинах для вычитания положительных двоичных чисел пользуют­ ся обратными кодами. Обратный код двоичного отрицательного чис­

ла N,

который обозначается через (jV)„6p, получается, если:

1)

в знаковом разряде поставить единицу;

2) во всех других разрядах заменить единицы нулями, а нули — единицами.

Например, если

Л7 = — 0 , 110010110010100,

то

(N)обр = 1001101001101011.

При алгебраическом сложении двоичных чисел нужно положи­ тельные числа записать в прямом коде, а отрицательные в обрат­ ном и произвести арифметическое сложение их кодов, включая зна­ ковые разряды. Если возникнет единица переноса в знаковом разря­ де, то эта единица прибавляется к младшему разряду суммы кодов. Положительный результат получается в прямом коде (в этом случае в знаковом разряде результата стоит нуль), а отрицательный резуль­ татв обратном коде (в этом случае в знаковом разряде резуль­ тата стоит единица).

Например, если

п

190

(Д^Опр = 01011101101 и (Л'2)обр= 10110100000,

Сложим (;V,)„P и (N2)обр:

1 11111 —единицы переноса

,

01011101101

слагаемые

+

10110100000

 

100010001101 .

 

Так как в знаковом разряде получается перенос единицы, то для нахождения кода суммы Mi и <V2 нужно эту единицу прибавить к младшему разряду получившегося кода, тогда

. 00010001101

+__________ 1_

00010001110 .

Полученный код и является кодом суммы Mi + M2. Так как в зна­ ковом разряде стоит ноль, то этот код является прямым. Итак, (Ni +

+ M2)ni) = 00010001110 и

N!-\- N2 ~ (0,0010001110)2= ~ Т ~ ■

Дополнительный и обратный коды отрицательного двоичного числа N связаны между собой следующим соотношением:

(^)доп = (ЛОобр + 2“ " .

где п — число разрядов в числе N.

Перевод прямых кодов отрицательных чисел, записанных в дво­ ичной системе счисления, производится автоматически самой маши­ ной перед тем, как она начнет выполнять команду сложения или вы­ читания. Если результат алгебраического сложения является отрица­ тельным и получается в виде обратного или дополнительного кода, то машина автоматически переводит этот код в прямой и только после этого задает результат в ячейки памяти запоминающего уст­ ройства.

До сих пор мы рассматривали алгебраическое сложение чисел с фиксированной запятой. В машинах с плавающей запятой выпол­ нение арифметических операций усложняется тем, что, кроме выпол-

191

нения операций с мантиссами чисел, приходится выполнять арифме­ тические операции с порядками этих чисел. Прежде чем производить алгебраическое сложение, машина должна произвести выравнивание порядков. Для этого к меньшему порядку прибавляется единица, сле­ ва к соответствующей мантиссе добавляется нуль, а последняя спра­ ва цифра отбрасывается. Таким образом, после прибавления к по­ рядку единицы происходит сдвиг мантиссы на один разряд вправо.

Такое прибавление единиц к меньшему порядку и сдвиг мантис­ сы происходят до тех пор, пока меньший порядок не станет равным большему. Сумме присваивается этот общий порядок.

Пр и м е р . Путь Nt= 343 и N2 = —11; в десятичной системе счис­ ления нормализованные формы этих чисел имеют вид

Ni — 0,343-103 и N 2= 0,11-102.

В двоичной системе счисления нормализованные формы этих чи­ сел запишутся следующим образом:

М = (0,101010111)2 .(Ю),<1001>* .

И

м , = (—0, 1011)2 • (Ю)о(100Ч

поэтому в двоичной системе счисления мантиссы и порядки чисел

Ni и Л'г будут соответственно mi = 0,101010111 и pi = 1001, т2 ——0,1011

и р2= 100

вычислить Л^ + Л'г, нужно сначала

выравнять

порядки.

Чтобы

Так как Pi—р2—(101)2, то нужно слева

к дробной части

мантиссы

N2 дописать пять нулей (так как (1012=5), т. е. сделать сдвиг ман­

тиссы на 5

разрядов вправо. Тогда

получаем для N2 мантиссу т2 =

= —0,000001011 и порядок р2=1001.

 

 

_

 

Это значит, что порядок N\ + N2

будет р ~ р 1 = р2 0 \, а мантис­

са rrii+ m2.

Сложение этих двух мантисс в вычислительной машине

происходит

как

с_ числами с фиксированной

запятой:

(m1),ip =

=0101010111

и

( т 2)обР = 1111110100,

поэтому

(»ii)np+(ш2)прр=

= 10101001011.

Так как в знаковом

разряде произошел перенос еди­

ницы, то написанная слева единица должна быть прибавлена к млад­ шему разряду получившегося кода, тогда получаем

. 0101001011

+ ____________1_

0101001100.

192

В знаковом разряде стоит нуль, поэтому полученный код является

прямым кодом числа mi + m2, т. е. мантисса N t+N2 равна 0,101001100. Итак, получаем

N1 + N 2 = (0,101001 ЮО)2.2(10ш>2

или

Ад + Nt =

332

-25 = 332.

Умножение чисел с фиксированной запятой сводится к много­ кратному сложению с последующим сдвигом вправо получающихся промежуточных сумм.

 

51

\

/

58

\

— —

I . I —

] =

(

64

/

\

64

)

= (—0,110011)г • (0,11101)2- Вычисление этого произведения

 

состоит

из двух этапов: вычисления модуля произведения и вычисления зна­ ка произведения.

Эти два сомножителя находятся в запоминающем устройстве машины в прямом коде: 1110011000000 и 0111010000000.

Вычисление модуля произведения этих двух чисел сводится к следующему.

1.Начиная с низшего разряда второго сомножителя, машина находит первый разряд, в котором находится единица. Это восьмой разряд.

2.Код первого сомножителя передается в арифметическое уст­ ройство с нулем в знаковом разряде; в нем появляется код

0110011000000.

3.Этот код сдвигается вправо на один разряд; теперь появляет­ ся код 0011001100000.

4.Рассматривается следующий девятый разряд кода второго сомножителя. Так как в этом разряде стоит 0, то код первого сом­ ножителя в арифметическое устройство не прибавляется.

5.Код, находящийся в арифметическом устройстве, сдвигается на один разряд вправо и станет равным 0001100110000.

6.Рассматривается десятый разряд кода второго сомножителя. Так как в этом разряде находится единица, код первого сомножи­ теля с нулем в знаковом разряде передается в арифметическое уст­ ройство, в нем происходит сложение находящегося там кода с посту­ пившим в него кодом первого сомножителя. В результате появляется код 0111111110000=0001100110000+0110011000000.

7.Код, находящийся в арифметическом устройстве, сдвигается

еще на один разряд вправо и становится равным 0011111111000.

13— 44 0

193

8. Рассматривается одиннадцатый разряд второго сомножителя. Так как в этом разряде стоит единица, то код первого сомножителя опять передается в арифметическое устройство, в котором появля­ ется число

1010010111000 = 0011111111000 + 0110011000000.

9.В арифметическом устройстве происходит сдвиг находящегося

внем кода на один разряд вправо и в нем появляется код

0101001011100.

10.В двенадцатом разряде второго сомножителя находится еди­

ница, поэтому в арифметическое устройство еще раз передается код первого сомножителя и в нем появляется код

1011100011100 = 0101001011100 -|~ 0110011000000.

11. Полученный код сдвигается на один разряд вправо и стано­ вится равным 0101110001110.

Это и есть прямой код произведения. В знаковом разряде у это­ го кода стоит 0. Цифра знакового разряда прямого кода произве­ дения определяется сложением цифры знаковых разрядов прямы кодов сомножителей по следующему правилу:

Действия с цифра­ ми знакового разря­ да

Действия со зна­ ками сомножителей

0 + 0= 0 ,1 + 0 = 1 ,0 + 1 = 1 ,1+ 1=0

(+ )•(+ )

=

(+)>

( - ) • ( + ) = ( - ) ;

( + ) • ( - )

=

( - ) .

( - ) • ( - ) = (+ )

При сложении цифр знаковых разрядов нужно помнить, что 1+ 1=0, 1. е. если в знаковых разрядах двух прямых кодов сомно­ жителей стоят единицы, то в знаковом разряде прямого кода про­ изведения машина ставит 0, а единица переноса отбрасывается. На основании этого правила в знаковый разряд кода полученного про­ изведения ставится единица. Окончательно получаем

(Л+)пр = 1101110001110. Поэтому М = (— 0,101110001110)2 или

194

При умножении чисел с плавающей запятой мантиссы сомно­ жителей перемножаются как числа с фиксированной запятой. Поряд­ ки алгебраически складываютоя, образуя порядок произведения. Полученный результат может быть нормализован, если пользоваться специальной командой умножения.

Итак, при сложении и вычитании отрицательные числа задаются в арифметическом устройстве машины в виде обратных или допол­ нительных кодов, при умножении и при делении — в виде прямых кодов. В запоминающих устройствах числа хранятся в прямом коде. Так как с порядками чисел происходит только сложение или вычи­

тание, то в некоторых

машинах (например, БЭСМ) коды отрица­

тельных

порядков

хранятся в виде дополнительных кодов.

Во

многих машинах

операция деления заменяется умножением

^так

как —— = а•

По числу b машина автоматически вычис-

ляет

 

1

 

 

число ——, которое затем множится на а.

 

 

о

способы выполнения арифметических операций

Рассмотренные

в электронной вычислительной машине показывают, что способ пред­ ставления чисел с плавающей запятой позволяет получить большую точность вычислений, чем при помощи чисел с фиксированной за­ пятой.

§ 4. Структура чисел и команд в электронной вычислительной машине

Числа, записанные в десятичной системе счисления, поступают в электронную вычислительную машину и хранятся в ней в виде ко­ дов — последовательностей единиц и нулей. При помощи кодов в вычислительную машину задаются не только числа, но и указания, над какими числами какие нужно производить операции.

Большинство электронных цифровых машин имеют несколько различных видов запоминающих устройств. Это магнитные ленты, магнитные барабаны, ферритовые запоминающие устройства. Не­ смотря на различия в конструкции, все запоминающие устройства состоят из большого числа однотипных элементов. Каждый такой элемент предназначен для хранения одного числового кода, который может быть или числом, или командой. Он называется ячейкой па­ мяти. В разных вычислительных машинах можно вводить и хранить числа двоичной системы счисления с различным числом двоичных знаков. Число двоичных цифр, которые имеют числа, хранящиеся в

13

195

машине, называется разрядностью этой машины. В каждой ячейке памяти хранится один код, у которого число двоичных цифр равно разрядности машины. Например, в каждой ячейке памяти машины БЭСМ хранятся 39-разрядные коды, а в машине «Минск-1» — 31-раз- рядные. Каждая ячейка имеет свой номер, причем ячейки различных запоминающих устройств одной и той же машины имеют различные номера. Эти номера называются адресами ячеек. Выборка из какойнибудь ячейки памяти хранящегося в ней кода или же передача в ячейку памяти какого-либо кода называется обращением к памяти по данному адресу.

Как уже говорилось, код, который состоит из набора единиц и нулей и хранится в какой-либо ячейке памяти, изображает или от­ дельное число, или указание о той операции, которую должна вы­ полнить машина. Во втором случае этот код называется командой. В команде могут указываться: одна элементарная операция, которую должна выполнить машина; адреса ячеек, в которых находятся чис­ ла, над которыми нужно выполнить эту элементарную операцию, и адрес ячейки, куда машина должна задать результат выполнения этой операции. Различные электронные вычислительные машины вы­ полняют различные элементарные операции, причем элементарные операции, выполняемые одной машиной, могут отличаться от элемен­ тарных операций, выполняемых другой. Количество и характер этих операций, выполняемых данной машиной, зависят от ее конструкции. Каждой элементарной операции присваивается некоторый номер, на­ зываемый кодом операции. Таким образом, если какой-нибудь код является командой, то его цифры можно разбить на две части. Пер­ вую часть образует код операции. Вторая часть называется адрес­ ной частью команды. Эта часть команды состоит из нескольких групп, каждая из которых выражает отдельный адрес ячейки памяти. Если в состав команды входит один адрес, то команда называется одно­ адресной, а машина, выполняющая эту команду, — одноадресной. Если же команда содержит два, три или четыре адреса, то она назы­ вается соответственно двухадресной, трехадресной, четырехадресной.

В команде не указывают сами числа, над которыми нужно вы­ полнить элементарную операцию, а указывают адреса ячеек памя­ ти, в которых они находятся. Это делается для того, чтобы состав­ ленные команды можно было использовать не только при решении одной заданной задачи с определенными числовыми коэффициентами, но и для решения той же задачи при любых других коэффициентах. В зависимости от того, какие коэффициенты заранее заданы в этих ячейках, машина выполнит вычисление с этими числами. Последо­ вательность команд образует программу работы машины. Эта прог­

196

рамма в виде двоичных чисел задается в машину и хранится в запо­ минающем устройстве так же, как исходные числа.

Машины с естественным и принудительным порядком выполне­ ния команд. В машинах с естественным порядком выполнения ко­ манд все команды задаются в определенных ячейках памяти, име­ ющих последовательные номера. После того как машина выполнит команду, находящуюся в ячейке с определенным номером, она начи­ нает выполнять команду, которая находится в ячейке с номером на единицу больше. Только после выполнения так называемых команд условного перехода машина начинает выполнять команду, которая не находится в следующей по порядку ячейке.

Но существуют машины, в которых после выполнения одной ко­ манды может выполняться команда, находящаяся в любой ячейке памяти. В командах таких машин приходится еще указывать адрес ячейки, в которой находится команда, выполняющаяся вслед за дан­ ной. Такие машины получили название машин с принудительным по­ рядком выполнения команд.

Например, четырехадресная команда

 

0567

2451

4200

5477

04

для машины с принудительным порядком выполнения команд, у ко­ торой код операции 04 соответствует делению, означает: «взять дели­ мое из ячейки с адресом 0567, взять делитель из ячейки с адресом 2451, частное записать в ячейку с адресом 4200 и перейти к выпол­ нению команды, хранящейся в ячейке с адресом 5477».

Машины с естественным порядком выполнения команд могут быть одноадресными, двухадресными и трехадресными. В одноадрес­ ной машине «Урал-4» имеется сумматор, в котором выполняются арифметические операции над числами. Результат может оставаться в сумматоре. В сумматор также можно переносить по одному числу из любой ячейки памяти.

Таким образом, сложение двух чисел, находящихся в определен­ ных ячейках, и запись суммы в определенной ячейке сводятся:

1)к передаче в сумматор первого слагаемого из заданной

ячейки;

2)к передаче из определенной ячейки второго слагаемого в сум­ матор и сложению двух имеющихся в нем чисел;

3)к записи полученного в сумматоре результата в заданной ячейке запоминающего устройства.

197

Для выполнения этих трех элементарных операций нужно за­ дать машине три команды. Пусть мы хотим сложить числа, находя­ щиеся в ячейках с адресами 0675 и 2057, а результат сложения за­ дать в ячейку с номером 1760 (все адреса ячеек записываются для удобства в восьмеричной системе счисления). Код первой элемен­ тарной операции для машины «Урал-4» равен 42, второй — 41 и тре­ тий— 56. Эти три команды имеют следующий вид:

42 0675

41 2057

56 1760

Код любой команды одноадресной машины состоит из кода опе­ рации и одного адреса и имеет вид

аА

где а и А — два восьмеричных числа: а — код операции, А — адрес ячейки запоминающего устройства.

В двухадресной машине «Минск-1» можно после выполнения сложения автоматически записать результат в одной из ячеек, в ко­ торых находились слагаемые. Пусть, например, мы хотим сложить два числа, находящиеся в ячейках запоминающего устройства с но­ мерами 1540 и 2206, а полученный результат задать в запоминаю­ щее устройство и одновременно отпечатать. Для этого предусмотре­ на специальная операция с кодом, равным 40. Поэтому искомая ко­ манда будет иметь вид (числа восьмеричные)

40 1540 2206

Отметим, что любое число, записанное в какой-нибудь ячейке, гасит­ ся (стирается) только в том случае, когда в эту ячейку задают новое

т

число. При передаче числа из любой ячейки в другую или в арифме­ тическое устройство равное ему число остается в этой ячейке.

В общем виде код команды двухадресной машины состоит из кода операции и двух адресов. Такой код имеет вид

а А В

где а — код операции, а числа А и В являются адресами.

В трехадресной машине арифметические операции производятся над двумя числами, адреса ячеек которых указываются в команде. После выполнения операции результат автоматически записывается в ячейку, адрес которой также указывается в команде. Сложим, на­ пример, два числа, находящиеся в ячейках с номерами 0077 и 0306. Пусть мы хотим, чтобы результат записался в ячейке с номером 0111. Обозначим код операции сложения через 01. Код соответствующей трехадресной команды, состоящей из кода операции и трех адресов, имеет вид

01 077 0306 0111

Наибольшее распространение получили одноадресные и трехацресные машины с естественным порядком выполнения команд.

Структура чисел и команд в электронной вычислительной ма­ шине. Электронная вычислительная машина производит вычисле­ ния с числами, записанными в двоичной системе счисления. Перевод чисел из десятичной системы в двоичную осуществляет сама маши­ на. Но чтобы задать цифры вводимого числа в машину, нужно за­ писать каждую цифру при помощи двоичных знаков. Любую из де­ сяти цифр (0, 1, 2, 3, 4, 5, 6, 7, 8 и 9) можно записать при помощи

четырех двоичных цифр следующим образом: 1— 0001, 2

— 0010,

3

ООП, 4 — 0100, 5 — 0101,

6 — 0110, 7 — 0111, 8 — 1000 и

цифру

9

1001. Эти четверки цифр,

заменяющие одну десятичную цифру,

на­

зываются тетрадами. После замены в десятичном числе его цифр тетрадами получающееся число остается десятичным, но цифры его уже записаны при помощи двоичных знаков. Такая форма записи десятичных чисел называется двоично-десятичной формой. Например,

двоично-десятичной

формой

числа

310419

будет

число

001100010000 0100 00011001. Запись десятичных

чисел в двоично­

десятичной форме происходит автоматически. Чтобы задать числа в машину, их предварительно нужно пробить на перфокарту или

199

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