Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
действия с кодами двоич чисел.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
77.44 Кб
Скачать

Дополнительный код:

занимаемые единицы

1

1

1

1

1

1

10

-

1

0

0

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

1

1

0

Для обратного кода также существует константа перевода , в данном случае она равна 11111111. Проверьте правильность преобразования в обратный код числа 34. Очевидно, что для 2-х байтного числа константой перевода в дополнительный код будет число 100000000000000002 или 1000016. Часто при решении задач удобнее работать с шестнадцатеричным представлением чисел, а ответ уже переписывать в двоичной системе.

Действия с машинными кодами чисел.

Напомним, что машинные коды чисел призваны заменить отсутствующую в компьютере операцию вычитания (и деления тоже) на операцию сложения. Разберем примеры сложения машинных кодов различных чисел.

Действия над числами, представленных в естественной форме

(для компьютера - это целые числа)

При сложении кодов целых чисел нужно учитывать следующие положения.

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

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

  3. При сложении чисел с разными знаками единица переноса из знакового (старшего) разряда стирается.

Пример. Дано А=254, В=175. Найти сумму чисел при разных знаках слагаемых в 16-разрядном формате.

А = 25410 = FE16 = 111111102

В = 17510 = AF16 = 101011112

Машинные коды этих чисел с разными знаками представим в таблицах.

254

-254

ПК

0 000000011111110

1 000000011111110

ОК

1 111111100000001

ДК

1 111111100000010

175

-175

ПК

0 000000010101111

1 000000010101111

ОК

1 111111101010000

ДК

1 111111101010001

Выполним действия (во всех случаях выполняется сложение в дополнительном коде!).

С1 = А + В

А

 

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

0

В

 

0

0

0

0

0

0

0

0

1

0

1

0

1

1

1

1

С1

 

0

0

0

0

0

0

0

1

1

0

1

0

1

1

0

1

Проверка: С1 = 1101011012 = 28+27+25+23+22+20 = 256+128+32+8+4+1 = 42910

С2 = А - В = А + (-В)

А

 

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

0

 

1

1

1

1

1

1

1

1

0

1

0

1

0

0

0

1

С2

1

0

0

0

0

0

0

0

0

0

1

0

0

1

1

1

1

Перенос из знакового разряда исключаем.

Проверка: С2 = 10011112 = 26+23+22+21+20 = 64+8+4+2+1 = 7910

С3 = В - А = В + (-А)

В

 

0

0

0

0

0

0

0

0

1

0

1

0

1

1

1

1

 

1

1

1

1

1

1

1

1

0

0

0

0

0

0

1

0

С3

 

1

1

1

1

1

1

1

1

1

0

1

1

0

0

0

1

Число С3 отрицательное в дополнительном коде.

Проверка: получим прямой код числа С3.

ДК

1

1

1

1

1

1

1

1

1

0

1

1

0

0

0

1

ОК

1

1

1

1

1

1

1

1

1

0

1

1

0

0

0

0

ПК

1

0

0

0

0

0

0

0

0

1

0

0

1

1

1

1

С3 = -10011112 = -(26+23+22+21+20 )= -(64+8+4+2+1) = -7910

С4 = -А - В = (-А) + (-В)

 

1

1

1

1

1

1

1

1

0

0

0

0

0

0

1

0

 

1

1

1

1

1

1

1

1

0

1

0

1

0

0

0

1

С4

1

1

1

1

1

1

1

1

0

0

1

0

1

0

0

1

1

Перенос из знакового разряда исключаем.

Число С4 отрицательное в дополнительном коде.

Проверка: получим прямой код числа С4.

ДК

1

1

1

1

1

1

1

0

0

1

0

1

0

0

1

1

ОК

1

1

1

1

1

1

1

0

0

1

0

1

0

0

1

0

ПК

1

0

0

0

0

0

0

1

1

0

1

0

1

1

0

1

С4 = -1101011012 =-( 28+27+25+23+22+20 )=-( 256+128+32+8+4+1) =- 42910