книги из ГПНТБ / Караваев, Н. И. Электронные цифровые вычислительные машины и программирование учеб. пособие
.pdf
|
- 30 |
- |
|
цамк, а единицы - нулями |
и к младшему цифровому разряду |
||
прибавить единицу. |
|
|
|
Например: X * -0,101101; |
|
1,010010 |
|
|
|
+ |
1 |
[X] |
доп |
- |
1,010011 . |
Для образования прямого кода отрицательного числа из его дополнительного кода необходимо в цифровых разрядах заменить нули единицами, а единицы - нулями и к младшему цифровому разряду прибавить единицу.
Кроме обычного дополнительного кода числа X, в ЭЦВМ используется модифицированный дополнительный код, который обозначается [х] доп и образуется по формуле
[х] доп J |
Х > е с |
л и х |
> ° ; |
/ 1 . 6 / |
|
[100 + |
X, |
если Х< 0 . |
|
Из формулы / 1 . 6 / |
видно, |
что |
модифицированный |
дополни |
тельный код отличается от обычного дополнительного кода
только наличием двух знаковых разрядов. |
|
|||||
|
|
Примеры: |
|
|
|
|
1 |
/ |
Х = + |
0,101101; |
2/ X « - |
0,101101; |
|
X |
|
жш= |
0,101101; |
X доп |
- |
1,010011; |
X |
|
доп- |
00,101101. |
X доп |
- |
11,010011. |
|
|
Обратный |
код числа X обозначается символом [х] |
обр |
||||||||
и |
образуется |
по формуле: |
|
|
|
|
|
|
|
|
||
|
|
[ X ] |
обр |
[10 - |
е с л и т |
X |
2* |
0; |
X < |
/ 1 . 7 / |
|
|
|
|
|
|
|
10 т + |
X, |
если |
0. |
|
|||
где |
ГПколичество разрядов |
дробной части |
числа. |
|
||||||||
|
|
Например: |
|
|
|
|
|
|
|
|
|
|
|
|
Х - + 0 , 1 1 0 1 1 ; |
|
[ X ] |
обр =. 0,11011 ; |
|
||||||
|
|
X = - 0,11011; |
[ X ] |
|
обр- 10-10"1 0 1 |
+(-0,11011) |
» |
|||||
= |
10 - 0,00001 - 0,11011 |
- |
1,00100. |
|
|
|
|
|||||
|
|
Из формулы / 1 . 7 / |
видно, |
что |
изображение положительно |
|||||||
го |
|
числа в обратном |
коде |
совпадает |
с изображением его в |
- 31 -
прямом коде. Правило образования обратного кода отрицатель ного числа может быть сформулировано следующим обрезом: чтобы представить отрицательное число в обратном коде, необ ходимо в знаковом разряде поставить единицу, а в цифровых разрядах нули заменить единицами, а единицы - нулями.
Например:
Х - - 0 , 1 0 1 1 0 1 ; |
|
U J |
обр- 1,010010. |
Нуль в обратном коде |
имеет два изображения: |
||
[ + 0 ] |
обр |
= 0,000 |
|
[ - 0 ] |
обр |
* 1,1111 |
|
для образования |
прямого |
кода отрицательного числа из |
его обратного кода необходимо в цифровых разрядах нули за менить единицами, а единицы - нулями.
Кроме обычного обратного кода числа X, в ЭЦВМ исполь зуется модифицированный обратный код, который обозначает
ся |
[х] |
обр |
|
и образуется |
по формуле: |
|
|
|||||
|
[х] |
2бР |
|
X, |
если 1 > |
0; |
|
/ 1 . 8 / |
||||
|
100-10~m + X, |
если X < |
0 . |
|
|
|||||||
|
|
|
|
|
||||||||
|
Из формулы / 1 . 8 / |
видно, |
что |
модифицированный обрат |
||||||||
ный |
код отличается |
от |
обычного |
обратного кода |
только на |
|||||||
личием двух знаковых разрядов. |
|
|
|
|
|
|||||||
|
Примеры: |
|
|
|
|
|
|
|
|
|
|
|
|
1 / |
Х « + |
|
0,101101; |
|
|
2/ |
Х « - |
0,101101; |
|||
|
|
[хЪбр- 0,101101; |
|
|
|
[Х]обр |
= |
1,01010; |
||||
|
|
[ХЫ5р= 00,101101. |
|
|
|
М о б р »11,01010. |
||||||
|
Сложение |
и вычитание в машинах с фиксированной |
||||||||||
|
|
|
|
|
|
запятой |
|
|
|
|
||
|
Арифметическую операцию вычитания модно рассматривать |
|||||||||||
как операцию сложения двух чисел, одно |
из которых отрица |
|||||||||||
тельное. В цифровых |
вычислительных |
машинах ыоано |
избежать |
|||||||||
операции |
вычитания, |
ее:;и оба |
числа, |
участвующие |
. операции, |
|||||||
представить в дополнит»'.-ьн-ам ил«: обратном коде. |
|
|||||||||||
|
Сложение чисел |
в дополнительном |
коде осуще |
|
ля.-гея а |
- 32 -
ЭЦВМ с помощью сумматора, в котором реализуется правило сложения дополнительных кодов. Дополнительные коды скла дываются по обычным правилам сложения, причем знаковый разряд рассматривается как обычный цифровой разряд. Это означает, что цифры в знаковом разряде складываются и, кроме того, производится перенос ив старшего цифрового разряда в знаковый разряд; единица переноса из знакового разряда теряется.
Полученная сумма будет выражена также в дополнитель ном коде, если абсолютная величина суммы меньше единицы.
При сложении чисел в дополнительном коде арифметичес кое устройство выполняет следующие операции:
-перевод чисел в дополнительный код;
-сложение дополнительных кодов чисел;
-перевод суммы из дополнительного кода в прямой. Результат суммирования в прямом коде передается в
запоминающее устройство или сохраняется в сумматоре. Примеры:
1 / |
[X] пр - 0,010101 ; |
[ У ] пр |
= 0,001011; |
|
|
[X] доп- 0,010101; |
[ У ] доп«= 0,001011; |
||
|
|
+ |
0,010101 |
|
|
|
|
0.001011 |
|
|
[X + У]доп |
- |
0,100000 |
|
|
[X + У]пр |
- |
0,100000 . |
|
2/ |
[X] пр - 0,100010; |
[у] пр- |
1,111110; |
|
|
[х]доп • 0,100010; |
[У]доп - |
1,000010; |
|
|
|
+ |
0,100010 |
|
|
|
|
1,000010 |
|
|
[X + У] доп- |
1,100100; |
|
|
|
[X + У] |
пр = |
1,011100. |
|
Сложение чисел в обратном коде осуществляется в ЭЦВМ с помощью сумматора, в котором реализуется правило сложе ния обратных кодов. Обратные коды складываются по обычным
- 33 -
правилам сложения, причем знаковый разряд рассматривается как обычный цифровой разряд. Из старшего цифрового разря да производится перенос в знаковый разряд и, кроме того, перенос из знакового разряда в младший разряд суммы /цик лический перенос/. Полученная сумма будет выражаться так же в обратном коде, если абсолютная величина суммы меньше единицы.
При сложении чисел в обратном коде арифметическое уст ройство выполняет следующие операции:
-перевод чисел в обратный код;
-сложение обратных кодов чисел;
-перевод суммы из обратного кода в прямой.
Результат суммирования в прямом коде передается в за поминающее устройство илч сохраняется в сумматоре.
Примеры: |
|
|
|
|
|
1 / [X] пр |
- |
0,100101 ; . |
[У] |
пр= |
1,110111; |
[х]обр |
- |
0,100101,- |
[У] |
обр- |
1,001000; |
+ 0,100101 1,001000
[X + У] обр - 1,101101 ; [X + У] пр = 1,010010 .
2/ |
[X] пр - 0,110111; |
[У] пр= |
1,100111 ; |
|
[х]обр = 0,110111; |
[У]обр= |
1,011000; |
+0,110111
1,011000
10,001111
цикаический перенос
[X + У] обр = 0,010000; [X + У] пр = 0,010000.
3/ [X] пр - 1,000101; |
[У] |
пр- |
1,110110; |
[х]обр = 1,111010; |
[У] |
обр= |
1,001001; |
- 34 -
+1,111010
1,001001
11,000011
циклический перенос
[X + У] обр * 1,000100; [X + У] пр = 1,-111011 .
При сложении чисел с одинаковыми знаками в машинах с фиксированной запятой может произойти переполнение разряд ной сетки. Поэтому необходимо установить признаки, по ко торым можно было бы судить о переполнении разрядной сетки машины. Признаки переполнения разрядной сетки наиболее просто реализуются в машинах в том случае, если сложение чисел проводится в модифицированных дополнительном или об ратном кодах.
Сложение чисел в модифицированных дополнительном и об ратном кодах проводится по тем же правилам, что и в обычных дополнительном и обратном кодах. Отличие заключается в том, что осуществляется перенос из одного знакового раа-
ряда в другой и, кроме того, в модифицированном дополнитель ном коде теряется единица переноса из старшего знакового разряда, а в модифицированном обратном годе из старшего знакового разряца осуществляется циклический перенос.
При.использовании модифицированных дополнительного или обратного кодов признаком переполнения разрядной сетки бу дет образование сочетания различных цифр в знаковых разря дах: либо 10, либо 0 1. В машинах имеется специальное уст ройство, которое сравнивает значения знаковых разрядов суммы и вырабатывает сигналы на останов машины в случае их несовпадения.
|
|
|
|
|
|
- |
35 |
- |
|
|
|
|
Примеры: |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 / |
[X] |
пр |
- |
0,001101; |
[У] |
пр- 0,101110; |
|||||
|
|
[х]доп |
=00,001101; |
[У]доп |
«00,101110; |
|||||||
|
|
|
|
|
|
|
|
•^od.ouiioi |
||||
|
|
|
|
|
|
|
|
00.1<-1110 |
||||
|
|
|
|
|
[X + У]доп00,111011 ; |
|||||||
|
|
|
|
|
[X + |
У] пр= |
0,111011. |
|||||
2/ |
[X] |
пр = 0,101101; |
|
[У] пр - |
0,101110; |
|||||||
|
[х]доп |
=00,101101; |
|
[У]доп |
-00,101110; |
|||||||
|
|
|
|
|
+ |
00,101101 |
|
|
|
|
||
|
|
|
|
|
|
00,101110 |
|
|
|
|
||
|
|
|
|
|
|
^,011011 . |
|
|
|
|
||
|
признак |
переполнения |
разрядной |
сетки |
||||||||
3/ |
[X] |
пр = 1,011001; |
|
[У] |
пр |
= 1,100101; |
||||||
|
ЭДобр |
-11,100110; |
. [У] обр |
|
-11,011010; |
|||||||
|
|
|
|
|
|
И 1,100110 |
|
|
|
|
||
|
|
|
|
|
|
11,011010 |
|
|
|
|
||
|
|
|
|
|
|
111,000000 |
|
|
|
|
||
|
|
|
|
|
|
I |
±*1 |
|
|
|
|
|
|
|
|
|
циклический |
перенос |
|
|
|
||||
|
[X + |
У] |
обр |
- |
11,000001 ; |
|
|
|
|
|||
|
[X + У] |
пр |
= |
1,111110 . |
|
|
|
|
||||
4/ |
[X] |
|
пр |
= 1,111001; |
[У] |
п р - |
1,100111; |
|||||
|
[х] |
обр |
-11,000110; |
[У] обр |
=11,011000; |
|||||||
|
|
|
|
|
|
11,000110 |
|
|
|
|
||
|
|
|
|
|
|
11,011000 |
|
|
|
|
||
|
|
|
|
|
|
ДО, 0 1 1 |
П0~. |
|
|
|
|
признак переполнения разрядной сетки
- 36 -
Сложение и вычитание чисел в машинах с плавающей запятой
Сложение и вычитание чисел в машинах с плавающей за пятой производится в несколько этапов с применением спе циальных логических операций /сравнение чисел или их
частей, |
сдвиг числа вправо |
или влево |
относительно запятой |
и д р . / . |
Последовательность |
проведения |
этапов сложения чи |
сел в машинах с плавающей запятой обычно принимается сле дующая :
-сравнение порядков чисел;
-выравнивание порядков, заключающееся в том, что меньший порядок / с учетом знака/ увеличивается на величину раз
ности порядков, а его мантисса сдвигается вправо отно сительно запятой на число разрядов, равное разности порядков; выравненный порядок будет порядком суммы;
-перевод мантисс чисел в модифицированный обратный или модифицированный дополнительный код;
-сложение мантисс, дающее мантиссу суммы;
-нормализация суммы при ее нарушении влево /при этом
производится сдвиг мантиссы вправо на один разряд и одновременно увеличивается порядок суммы на единицу/;
-перевод мантиссы в прямой код;
-нормализация суммы при ее нарушении вправо.
Следует обратить внимание на то, что нормализация сум мы влево проводится до перевода мантиссы в прямой код. Признаком нарушения нормализации влево при использовании модифицированных кодов является сочетание различных цифр в знаковых разрядах, т . е . признак нарушения нормализации влево совпадает с признаком переполнения разрядной сетки /для машин с фиксированной запятой/. Нормализация суммы при ее нарушении вправо проводится после перевода мантис сы суммы в прямой код.
- 37 -
Пример: |
|
|
"mx ]np = 0,10110000; |
[Рх]пр = |
0,100; |
;Шу]пр = 1,11010000; |
[Ру]пр = |
0,011 . |
Следует заметить, что порядки выражаются целыми чис лами ; запятая при записи порядков используется для отде ления знаковых разрядов.
а/ Сравнение порядков:
б/ |
|
|
Р х > Ру |
|
Выравнивание порядков: |
||||
|
||||
|
доп » 00,100; |
|
доп » 11,101 ; |
|
|
|
+00,100 |
||
|
|
|
11,101 |
|
|
|
Доп« |
00.001 |
|
|
№пр» |
0,001 . |
||
Так как порядок числа |
У на |
единицу меньше порядка |
||
числа X, то мантисса числа |
У сдвигается на один разряд |
|||
вправо, а для обоих чисел |
принимается порядок числа X. |
Этот же порядок будет и порядком суммы до проведения нор мализации.
Таким образом, после выравнивания порядков будет:
[тх1пр- 0,10110000; |
[РхЗпр = |
0,100; |
[ГЛу]пр =1,01101000; |
Ру]пр = |
0,100. |
в/ Перевод мантисс в модифицированный дополнительный код:
,ГПх]доп - 00,10110000; - П1у]доп - 11,10011000 .
г/ Сложение мантисс: +00,10110000
И,10011000
00,01001000
|
|
- за - |
д/ |
Перевод мантиссы суммы в прямой код: |
|
|
[ т х + т у ] П р= |
о.оюоюоо; |
е/ |
[ Р х Д р - |
0,100. |
Нормализация суммы. |
||
|
В данном примере |
имеет место нарушение нормализации |
вправо. Для нормализации суммы мантисса сдвигается влево на один разряд, а порядок суммы уменьшается на единицу:
[|Т?х + ГТ]у]пр |
* |
0,10010000 ; |
[Рх+у]пр |
- |
0,011 . |
В заключение следует отметить, что в машинах с пла вающей запятой переполнение разрядной сетки будет только в том случае, если в результате проведения операции будет получен порядок, который по абсолютной величине больше наибольшего представляемого в матине порядка.
У м н о ж е н и е
При рассмотрении операций сложения и вычитания было установлено, что для их реализации в ЭЦВМ наиболее удобно использовать представление чисел в дополнительном или об ратном коде. При выполнении операции умножения также жела тельно использовать представление чисел в дополнительном или обратном коде, так как в этом случае может быть получен результат с учетом знака. Однако использование дополнитель ного или обратного коде при выполнении операции умножения связано с рядом трудностей. Поэтому в большинстве совре менных машин умножение чисел производится путем умножения абсолютных величин этих чисел, представленных в прямом ко де, и определения знака произведения.
Знак произведения определяется специальной схемой пу тем сложения знаковых разрядов сомножителей; на выходе схе мы получается цифра, соответствующая знаку произведения.
- 39 -
Сложение знаковых разрядов осуществляется в соответствии с таблицей:
0 |
+ 0 = 0 ; |
||
0 |
+ |
1 - |
1 ; |
1 |
+ |
0 - |
1 ; |
1 |
+ |
1 = 0 . |
Из этой таблицы видно, что правило сложения знаковых разрядов сомножителей полностью соответствует правилу оп ределения знака произведения.
При умножении чисел в машинах с плавающей запятоС опе рация умножения чисел слагается из умножения мантисс и алгебраического суммирования порядков. Результат операции, при необходимости, нормализуется. Для умножения мантисс может быть выбран тот же способ кодирования, что и при ум ножении чисел в машинах с фиксированной запятой, т.е.% про изведение мантисс получается путем умножения их абсолютных величин, представленных в прямом коде. Для получения ал гебраической суммы порядков обычно используется обратный или дополнительный код.
Умножение в двоичной системе счисления может быть вы полнено путем последовательных суммирований и сдвигов. Про цессом суммирования управляют цифры множителя: если очеред ная цифра множителя 1, то множимое добавляется к сумме час тичных произведений; если очередная цифра множителя 0, сум мирование не производится.
В настоящее время известно несколько способов умноже ния двоичных чисел, но наибольшее применение имеют два спо соба.
1. Умножение начинается с младших разрядов множителя /множитель сдвигается вправо/. После каждого такта сумми рования сумма частичных произведений сдвигается вправо.
Множимое неподвижно. Умножение может начинаться также со старших разрядов множителя. В этом случае множитель и сумма частичных произведений сдвигаются влево.