Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2.doc
Скачиваний:
3
Добавлен:
02.05.2019
Размер:
165.89 Кб
Скачать

2.5. Кодирование чисел в эвм

Применение специальных кодов чисел позволяет все основные вычислительные операции свести к операции сложения или к операции сложения и сдвига.

Операция сложения положительных чисел выполняется в ЭВМ в прямом коде. Этот же код используется для хранения положительных и отрицательных чисел в памяти машины. Отрицательные числа при выполнении операции вычитания представляются в ЭВМ двумя кодами - обратным и дополнительным.

Прямой код любого двоичного числа X, представленного правильной дробью, имеет вид:

Пусть, например, X=0,110011. Тогда в прямом коде положительное и отрицательное число представляются так:

положительное [X]пр= 0,110011,

отрицательное [X]пр= 1-(-0,110011)=1,110011.

Из примера видно, что нуль или единица в целой части числа кодируют знак числа: 0 - число положительное, 1 - число отрицательное.

Обратный код двоичного числа X <1 образуется так: обратный код положительного числа равен его прямому коду, т.е. [X]обр=[X]пр, обратный код отрицательного числа получается, если в числовых разрядах нули заменить единицами, а единицы нулями, при этом в знаковом разряде должна быть единица, т.е. код отрицательного числа.

Пусть, например, [X]пр= -0,10100, тогда [X]обр=1,01011.

Дополнительный код двоичного числа X<1 имеет вид

Пусть по-прежнему X=0,110011. Тогда в дополнительном коде положительное число будет представлено так же, как и в прямом, т.е. [X]доп=0,110011, а отрицательное будет равно [X]доп=10+(-0,110011)=1,001101.

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

2.6. Арифметические операции над двоичными числами в обратном и дополнительном кодах

2.6.1. Сложение чисел

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

  • исходные числа записываются в принятом для данной машины коде;

  • производится порязрядное сложение кодов чисел, включая и знаковые разряды;

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

  • производится анализ на переполнение разрядной сетки.

Операция вычитания в ЭВМ заменяется операцией сложения в обратном или дополнительном коде.

Пример 7. Сложить два числа X=0,1011 и Y=-0,01101 в обратном и дополнительном кодах.

Изображение X и Y в прямом коде

[X]пр=0,10111; [Y]пр=1,01101.

Запишем X и Y в обратном и дополнительном кодах и выполним их сложение:

[X]об= 0,10111 [X]доп= 0,10111

[Y]об= 1,10010 [Y]доп= 1,10011

10,01001 10,01010

+1

X+Y= 0,01010 X+Y= 0,01010

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

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

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

Умножение чисел осуществляется в прямом коде. Процесс умножения состоит из операций сложения и сдвига множимого или сумм частных произведений. Умножение может производиться начиная с младшего или старшего разряда множителя. В первом случае сдвиг частных произведений производится влево, а во втором - вправо. Знак произведения получается в результате сложения знаков сомножителей. При одинаковых знаках сомножителей знак произведения положительный, при разных знаках - отрицательный (0+0=0, 1+1=0, 1+0=1, 0+1=1).

Пример 8. Найти произведение двух чисел X=0,1101 и Y=1,1011.

Выполняем умножение абсолютных значений сомножителей со сдвигом влево и вправо:

0,1101 0,1101

0,1011 0,1011

1101 1101

1101 1101

1101 1101

10001111 10001111

Так как первое число положительное, а второе отрицательное (0+1=1), то результат будет числом отрицательным, тогда

XY=1.10001111.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]