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

13. Машинные коды

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

Различают следующие коды двоичных чисел:

  • прямой код (П),

  • обратный код (ОК),

  • дополнительный код (ДК) .

Прямой код

Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (0 или 1) перед его старшим числовым разрядом.

Пример.

А10 = +10; А2 = +1010; [А2]п = 0|1010

В10 = –15; В2 = –1111; [В2]п = 1|1111

Обратный код

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

Пример.

А10 = +10; А2 = +1010; [А2]ок = [А2]п = 0|1010

В10 = –15; В2 = –1111; [В2]ок = 1|0000

Свое название обратный код получил потому, что коды цифр отрицательного числа заменены на инверсные. Наиболее важные свойства обратного кода чисел:

  • сложение положительного числа С с его отрицательным значением в обратном коде дает т.н. машинную единицу МЕок=1|11…11, состоящую из единиц в знаковом и в значащих разрядах числа;

  • нуль в обратном коде имеет двоякое значение. Он может быть как положительным числом – 0|00…00, так и отрицательным 1|11…11. Значение отрицательного числа совпадает с МЕок. Двойственное представление 0 явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.

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

Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда (20 – для целых чисел, 2 – для дробных)

Пример.

А10 = +10; А2 = +1010; [А2]дк = [А2]ок = [А2]п = 0|1010

В10 = –15; В2 = –1111; [В2]дк = [В2]ок + 20 = 1|0000+1 = 1|0001

Основные свойства дополнительного кода:

• сложение дополнительных кодов положительного числа С с его отрицательным значением дает т.н. машинную единицу дополнительного кода:

МЕдк=МЕок + 20 = 10|00…00,

т.е. число 10 (два) в знаковых разрядах числа;

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

МЕдк.

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

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

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

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

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

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

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

А = 25410 = FE16 = 111111102

В = 17510 = AF16 = 101011112

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

254 -254

ПК 0 000000011111110 1 000000011111110

ОК 0 000000011111110 1 111111100000001

ДК 0 000000011111110 1 111111100000010

175 -175

ПК 0 000000010101111 1 000000010101111

ОК 0 000000010101111 1 111111101010000

ДК 0 000000010101111 1 111111101010001

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

С1 = А + В

А 0000000011111110

В 0000000010101111

С1 0000000110101101

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

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

А 0000000011111110

-В 1111111101010001

С2 10000000001001111

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

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

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

В 0000000010101111

-А 1111111100000010

С3 1111111110110001

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

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

ДК 1111111110110001

ОК 1111111110110000

ПК 1000000001001111

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

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

-А 1111111100000010

-В 1111111101010001

С4 11111111001010011

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

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

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

ДК 1111111001010011

ОК 1111111001010010

ПК 1000000110101101

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

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

При сложении чисел, представленных в нормальной форме, необходимо учитывать:

Числа в нормальной форме хранятся в памяти в прямом коде с нормализованными мантиссами.

Сложение кодов чисел производится путем сложения мантисс только при одинаковых порядках (характеристиках) слагаемых. За общий выбирается наибольший порядок. Выравнивание порядков слагаемых осуществляется изменением мантиссы меньшего числа.

Результаты в прямом коде нормализуются.

Пример. Дано А = 15 7/8 ; B = 5/16. Найти сумму чисел при разных знаках слагаемых.

Вычисления с числами в нормальной форме удобнее выполнять в шестнадцатеричной системе счисления, разряды чисел 4 байта (32 двоичных разряда).

A = F,E16; B = 0,516

1. Нормализация мантисс и определение характеристик:

mA = 0,FE PxA = 40 + 1 = 41

mB = 0,5 PxB = 40 + 0 = 40

2. Выравнивание характеристик:

PxB = 41 => mB = 0,05

3. Дополнительные коды мантисс отрицательных чисел.

-mA = 1.00 - 0,FE = 0,02

-mB = 1.00 - 0,05 = 0,FB

4. Коды чисел:

а) в шестнадцатеричном представлении

A = 41FE0000

B = 41050000

-A = C1020000

-B = C1FB0000

б) в двоичном представлении

A = 0 1000001 1111 1110 0000 0000 0000 0000

B = 0 1000001 0000 0101 0000 0000 0000 0000

-A = 1 1000001 1111 1110 0000 0000 0000 0000

-B = 1 1000001 0000 0101 0000 0000 0000 0000

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

Важно: помните, что числа в нормальной форме представления хранятся в прямом коде!

5. Выполнение действий.

C1 = A + B

mA FЕ0000

mB 050000

mC1 1030000

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

Нормализация мантиссы: mC1 = 0,103 PC1 = 41 + 1 = 42

Код числа C1 = 42103000 или 0 1000010 0001 0000 0011 0000 0000 0000

Проверка: С1 = 10,316 = 16 3/1610

C2 = -A - B = - (A + B)

Так как числа хранятся в прямом коде, нет необходимости выполнять двойные преобразования, можно взять C2 = -C1.

Код числа С2 = 1 1000010 0001 0000 0011 0000 0000 0000 или C2103000

С2 = -10,316 = -16 3/16 10

C3 = A – B

mA FЕ0000

-mB FB0000

mC3 1F90000

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

Код числа С3 = 41F90000 или 0 1000001 1111 1001 0000 0000 0000 0000

С3 = F,916 = 15 9/1610

C4 = B – A

-mA 0200000

mB 0500000

-mC4 0700000

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

mC4 = 1,00 - 0,07 = 0,F9 PmC4 = 41

Код числа С4 = C1F90000 или 1 1000001 1111 1001 0000 0000 0000 0000

C4 = -F,916 = -15 9/1610