- •Информация и данные.
- •Системы счисления и перевод чисел из одной системы представления в другую.
- •Позиционные системы счисления.
- •Перевод чисел из одной системы представления в другую.
- •. Перевод смешанного числа (целого и дробного) из десятичного счисления в другое счисление.
- •Форматы чисел.
- •. Естественная форма числа или представление чисел в формате с фиксированной запятой (точкой).
- •Нормальная форма числа или представление чисел в формате с плавающей запятой (точкой).
- •Машинные коды чисел.
- •Арифметические действия над машинными кодами.
- •Логические основы построения компьютера.
Машинные коды чисел.
В компьютерах все арифметические операции осуществляются в машинных кодах и могут быть сведены к операции сложения и операциям сдвига вправо или влево. Обычно применяются прямой, обратный и дополнительный коды.
Представление чисел в прямом коде осуществляется в виде знакового разряда и абсолютной величины числа.
Задача.
+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.
Даны два числа А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. Это происходит в результате переполнения разрядов и при появлении такой ошибки операционная система компьютера вырабатывает запрос на прерывание программы.