Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
InforPraktika_vecherniki-Zadnie_k_r.doc
Скачиваний:
1
Добавлен:
22.07.2019
Размер:
351.23 Кб
Скачать
  1. Машинные коды чисел.

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

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

Задача.

+2910 = 001111012 -2910 = 10111101

+12710 = 011111112 -12710 = 111111112

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

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

Для дополнительного кода отрицательное число Z представим как

Z = -Х = (10n –Х) - 10n,

где Z <0, Х>0, n – величина разрядной сетки, а 10n –Х –дополнительный код числа.

Для обратного кода отрицательное число Z представим как

Z = -Х = (10n – 1 - Х) - 10n +1,

где Z <0, Х>0, n – величина разрядной сетки, а 10n – 1 - Х –обратный код числа.

Для положительного числа прямой, обратный и дополнительный коды будут одинаковыми Апод.

Задача.

Для числа +31→Апод =0000 0000 0001 11112.

Для числа -31→ Ап =1000 0000 0001 11112.

Для построения дополнительного кода выбираем константу 1015= 1000 0000 0000 0000 и получаем Ад =1111 1111 1110 00012.

Общие правила образования машинных кодов:

-положительное число в прямом, обратном и дополнительном кодах одинаково;

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

-обратный код отрицательного числа получается из прямого кода путем инверсии, т.е. замены 1 на 0 и всех 0 на 1, кроме знакового разряда;

-дополнительный код получается из обратного прибавлением 1 к младшему разряду (перенос 1 в знаковый разряд не учитывается);

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

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

    1. Арифметические действия над машинными кодами.

Выполнить действия над числами в естественной форме в формате Н:

Задача 1.

Даны два числа А10 = 126 и В10 = 267. Необходимо найти сумму этих чисел при разных знаках. Для этого перевести А10→ А16→ А2 и В10→ В16→ В2.

А = 7Е16 =11 11102;

В = 10В16 = 1 0000 10112.

В формате Н эти числа имеют следующий вид:

Ап = 0.000 0000 0111 1110; Вп = 0.000 0001 0000 1011;

д = 1.111 1111 1000 0010; -Вд =1.111 1110 1111 0100;

Выполнить сложение чисел, используя соответствующие коды.

А+В = S1

Ап = 0.000 0000 0111 1110

+ Вп = 0.000 0001 0000 1011

S1 =

-А-В = S2

д = 1.111 1111 1000 0010

+(-Вд ) =1.111 1110 1111 0100

S2 =

А-В = S3

Ап = 0.000 0000 0111 1110

+(-Вд ) =1.111 1110 1111 0100

S3 =

-А +В = S4

д = 1.111 1111 1000 0010

п = 0.000 0001 0000 1011

S4 =

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

Проверить правильность полученных результатов, осуществив сложение в десятичной системе и сравнив результаты с S1, S2, S3, S4:

А+В = 39310 = 18916 = 0.000 0001 1000 10012;

-А-В = -39310 = -18916 = 1.111 1110 0111 01112;

А-В = -14110 = -8D16 = 1.111 1111 0111 00112;

-А+В = 14110 = 8D16 = 0.000 0000 1000 11012.

Задача 2.

Даны два десятичных числа А = 27154 и В = 7589. Найти суммы (А+В) и (-А-В) в формате Н.

А = 6А1216 = 0.110 1010 0001 0010; В = 1DА516 = 0.001 1101 1010 01012

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

Ап = 0.110 1010 0001 0010; Вп = 0.001 1101 1010 0101;

д = 1.001 0101 1110 1110; -Вд = 1.110 0010 0101 1011.

Найдем суммы:

А+В = S1 Ап = 0.110 1010 0001 0010

+

Вп = 0.001 1101 1010 0101

S1 =

-А-В = S2 -Ад = 1.001 0101 1110 1110

+

д = 1.110 0010 0101 1011

S2 =.

Проверить результат посредством сложения в десятичной системе.

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

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