- •302030, Г. Орел, ул. Московская, 65
- •Введение
- •Цель лабораторной работы
- •2 Порядок выполнения работы
- •Методические указания
- •3.1 Системы счисления. Формы и методы представления чисел
- •3.1.1 Системы счисления и кодирования информации
- •3.1.2 Перевод чисел из одной системы счисления в другую
- •3.1.2.1 Перевод чисел с основаниями, являющимися степенью цифры 2
- •3.1.2.2 Перевод целых чисел из одной системы счисления в другую
- •3.1.2.3 Перевод дробных чисел из одной системы счисления в другую
- •3.1.2.4 Перевод чисел из любой системы счисления в десятичную систему
- •3.1.3 Кодирование информации в эвм
- •3.1.4 Формы и форматы представления числовых данных в эвм
- •3.1.4.1 Естественная форма представления числа в памяти эвм
- •3.1.4.2 Нормальная форма представления числа в памяти эвм
- •3.1.5 Особенности представления чисел с плавающей запятой в пэвм
- •3.2 Машинные коды чисел и действия над ними
- •3.2.1 Сущность и назначение машинных кодов
- •3.2.2 Правила образования машинных кодов
- •3.2.3 Действия над машинными кодами чисел
- •3.2.3.1 Действия над числами, представленными в естественной форме
- •3.2.3.2 Действия над числами, представленными в нормальной форме
- •4 Контрольные вопросы
- •Действия над числами, представленными в естественной форме.
- •Действия над числами, представленными в нормальной форме.
- •Список рекомендуемой литературы
- •Приложение а
- •(Справочное)
- •Примеры задач для самостоятельного решения
- •Коды чисел в формате с фиксированной точкой
- •Коды чисел в формате с фиксированной точкой
- •Сложение чисел в формате с фиксированной точкой
- •Сложение чисел в формате с плавающей точкой
- •Приложение б (обязательное) Пример оформления титульного листа отчета по лабораторной работе
- •Приложение в (обязательное) Пример решения лабораторной работы
- •Решение.
3.2.2 Правила образования машинных кодов
прямой код положительного и отрицательного чисел отличается только знаковыми разрядами, модуль числа не изменяется; положительное число в прямом, обратном и дополнительном кодах изображается одинаково;
обратный код отрицательного двоичного числа образуется из прямого кода положительного числа путем замены всех единиц на нули, а нулей на единицы, включая знаковый разряд;
дополнительный код отрицательного числа образуется путем добавления единицы к младшему разряду обратного кода этого же числа или заменой в коде положительного числа всех нулей на единицы, а единиц на нули, исключая последнюю единицу и следующие за ней нули.
Определение прямого кода отрицательного числа по его обратному и дополнительному коду производится по тем же правилам.
Числа, представленные в естественной форме, в памяти ЭВМ представляются в дополнительном коде, числа в нормальной форме хранятся в прямом коде. Действия в ЭВМ выполняются в прямом и дополнительных кодах, обратный код используется для получения дополнительного кода.
3.2.3 Действия над машинными кодами чисел
3.2.3.1 Действия над числами, представленными в естественной форме
При сложении кодов чисел в естественной форме следует учитывать следующие положения:
числа хранятся в памяти в дополнительном коде;
в сумматоре числа складываются вместе со знаками, при этом образуется знак результата;
при сложении чисел разными знаками единица переноса из знакового разряда стирается, т.е. компенсируется одна константа образования дополнительного кода;
признаками переполнения разрядной сетки при сложении кодов чисел с одинаковыми знаками могут служить:
а) знак суммы не соответствует знакам слагаемых;
б) переносы из старшего разряда суммы в знаковый и из знакового не согласуются, т.е. один из них присутствует, а другой отсутствует.
Очевидно, что если переносы согласуются, т.е. оба отсутствуют или оба присутствуют, то переполнения разрядной сетки не происходит./5/
Пример 2.4. Даны два числа: А = 254, В = 175. Найти сумму чисел при разных знаках слагаемых в 16-ти разрядном формате.
Решение.
а) Представим исходные числа в двоичной системе счисления:
А10 = 254 ~ А16 = FE ~ А2 = 11111110;
B10 = 175 ~ B16 = AF ~ B2 = 10101111.
б) Составим машинные коды этих чисел с разными знаками:
[A]пк = 0.000000011111110;
[B]пк = 0.000000010101111;
[–A]дк = 1.111111100000010;
[–A]дк = 1.111111101010001.
в) Выполним действия:
C1 = A + B
-
[
+
A]пк = 0.000000011111110[B]пк = 0.000000010101111
[С1]пк = 0.000000110101101 > 0;
C2 = A – B
-
+
[A]пк = 0.000000011111110[–B]дк = 1.111111101010001
[С2]пк = 10.00000001001111 > 0;
C3 = В – А
-
+
[В]пк = 0.000000010101111[–А]дк = 1.111111100000010
[С3]пк = 1.111111110110001 < 0;
C1 = – A – B
-
+
[–A]дк = 1.111111100000010[–B]дк = 1.111111101010001
[С4]пк = 11.111111001010011 < 0.
Из примера следует:
при получении сумм слагаемых с одинаковыми знаками (С1 и С4) переполнения разрядной сетки не произошло, так как знак суммы соответствует знакам слагаемых и переносы в знаковый и из знакового согласуются;
при получении сумм С2 и С4 образовался перенос из знакового разряда, который следует исключить;
суммы С1 и С2 – положительные, С3 и С4 – отрицательные, т.е. знаки результатов получены при сложении чисел со знаками.
Полученные суммы заносятся в разрядную сетку памяти в дополнительном коде, т.е. без изменения.
Проверка. Для этого следует перевести полученные суммы любым способом в десятичную систему и сравнить с заданием:
С1 = 110101101 = 1 · 28 + 1 · 27 + 1 · 25 + 1 · 23 + 1 · 22 + 1 · 20 = 429;
С1 = 254 + 175 = 429.
Пример 2.5. Дано А = 25756, В = 7125. Найти суммы положительных и отрицательных значений в 16-ти разрядном формате.
Решение.
А10 = 25756 ~ А16 = 649С ~ А2 = 110010010011100;
B10 = 7125 ~ B16 = 1ВD5 ~ B2 = 1101111010101.
C1 = A + B
-
[
+
A]пк = 0.110010010011100[B]пк = 0.001101111010101
[С1]пк ≠ 1.000000001110001 < 0;
C2 = – A – B
-
[
+
A]дк = 1.001101101100100[B]дк = 1.110010000101011
[С2]дк = 10.111111110001111 > 0.
Полученные суммы не соответствуют ожидаемым результатам, поскольку произошло переполнение разрядной сетки за допустимые значения (32767). Переполнение разрядной сетки легко определить либо по первому признаку – знаки сумм С1 и С2 не соответствуют знакам слагаемых, либо по второму – переносы в знаковый и из знакового разряда в суммах С1 и С2 не согласуются. В этих случаях в больших ЭВМ вырабатывается запрос на прерывание программы, в некоторых типах малых ЭВМ производится автоматический переход к нормальной форме представления данных.
Замечание. Операции умножения и деления производятся над абсолютными значениями чисел – в прямом коде. Знак произведения определяется сложением по модулю 2 знаков сомножителей (0 + 0 = 0, 1 + 0 = 1, 1 + 1 = 0), знак частного – сложением по модулю 2 знаков делимого и делителя, а знаку остатка присваивается знак делимого.
