- •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.1.5 Особенности представления чисел с плавающей запятой в пэвм
В некоторых мини- и микроЭВМ также используется беззнаковый порядок, смещенный на 27 = 128 = 8016, который меняется в диапазоне 0 Px 255 = FF. В разрядной сетке под порядок отводится 8 двоичных разрядов, под мантиссу – 23.
Мантисса представляется в двоичной системе, изменение порядка на 1 приводит к смещению мантиссы влево или вправо на один двоичный разряд.
Поэтому числа в этих машинах при Px = 127 представляются в диапазоне
Amax (1 – 2—23) · 2127 (210)12 · 27 (103)12 · 102 = 1038.
Отметим, что точность представления чисел определяется количеством двоичных разрядов, отводимых под мантиссу числа. Может сложиться мнение, что по сравнению с шестнадцатеричной системой нормализации тетрадами, когда под мантиссу в коротком формате отводится 24 разряда, использование двоичной системы нормализации с 23 разрядами для мантиссы не только сокращает диапазон представления чисел, но и уменьшает точность их представления. Однако это не так. Дело в том, что при двоичной системе в старшем разряде дробной части нормализованной мантиссы всегда должна быть 1. Эта единица в разрядную сетку не заносится, но она подразумевается. При выполнении действий над числами в сумматоре или при выводе результатов она автоматически учитывается.
Рассмотрим представление в разрядной сетке (рисунок 4) чисел A и D из предыдущих примеров для случая использования двоичной системы нормализации со смещением на 128.
Знак |
Характеристика |
Дробная часть мантиссы |
||||||
0 |
1000 |
1111 |
111 |
1010 |
0001 |
0001 |
0000 |
0000 |
47FA |
11 |
00 |
||||||
1 |
0111 |
1011 |
000 |
0000 |
0000 |
0000 |
0100 |
0000 |
BD80 |
00 |
00 |
Рисунок 4 – Представление чисел A и D в разрядной сетке при использовании двоичной системы нормализации со смещением на 128
Пример 1.11.
Число A = 32008,510 = 111110100001000,12;
mA = 0,11111010000100012;
PXA = 12810 + 1510 = 14310 = 100011112.
Число D = –0,01562510 = –0,0000012;
mD = –0,12;
PXD = 12810 – 510 = 12310 = 011110112.
Следует отметить, что шестнадцатеричные коды чисел при использовании двоичной системы нормализации со смещением на 128 отличны от кодов этих же чисел, представленных на рисунках 2 и 3.
3.2 Машинные коды чисел и действия над ними
3.2.1 Сущность и назначение машинных кодов
В ЭВМ посредством применения специальных машинных кодов все арифметические операции над числами сводятся к выполнению операции арифметического сложения и сдвигу их кодов вправо или влево. При этом учитываются знаки чисел, автоматически определяются знаки результата и признаки возможного переполнения разрядной сетки заданных форматов. Применяются прямой, обратный и дополнительный коды. Замена операции вычитания на сложение может осуществляться с помощью обратного и дополнительного кодов. Сущность этого процесса заключается в том, что вычитаемое B, как отрицательное число, представляется в виде дополнения до некоторой константы K, при которой выполняется условие K – B > 0. Обратный и дополнительный коды отличаются выбором значения константы K. Следовательно, операцию C = A – B, где A и B целые положительные числа в любой системе счисления, можно представить в виде:
C = A – B = A + (– B) = A + (10 n – B) – 10 n = A + (10 n – 1 – B) – 10 n + 1, (2.1)
где 10 – основание любой системы счисления.
K = 10 n – константа образования дополнительного кода; K = 10 n – 1 – константа образования обратного кода; n – количество разрядов представления целых чисел в выбранной системе счисления (для дробных чисел n = 0).
Из выражения (2.1) следует, что из полученной суммы нужно исключить добавленную к вычитаемому константу.
Рассмотрим примеры действий над числами.
Пример 2.1. Дано: А = 59, В = 34. Найти C1 = A – B.
Пусть константа для дополнительного кода 102 = 100, для обратного кода 102 –1 = 99.
Тогда (– В)доп = 100 –34 = 66,
(– В)обр = 99 –34 = 65.
-
+
A = 59(– B)доп = 66
125
– 102 = 25 = C;
-
+
A = 59(– B)обр = 65
124
– 102 = 24
+1
25 = C.
Из примера 2.1 следует, что операция вычитания заменяется операцией сложения с дополнениями, при этом из полученной суммы константа дополнительного кода компенсируется просто ликвидацией единицы переноса из старшего разряда суммы, а константа обратного кода компенсируется путем исключения единицы переноса и добавления ее к младшему разряду суммы, т.е. требуется дополнительная операция сложения. Поэтому в ЭВМ для выполнения действий используется дополнительный код, а обратный код используется для образования дополнительного кода.
По результатам действий под числами с дополнениями легко определить знак суммы и наличие переполнения разрядной сетки (сумма равна или больше по модулю константы дополнительного кода).
Пример 2.2. Дано: А = 59, В = 34. Найти:
а) C1 = B – A, (– A)доп = 102 –59 = 41;
б) C2 = A + B, (– B)доп = 102 –34 = 66;
в) C1 = – A – B.
а)
-
+
B = 34(– A)доп = 41
(C1)доп = 75
C1 = 75 – 102 = – 25;
б)
-
A
+
= 59B = 34
C2 = 93
в)
-
(
+
– A)доп = 41(– B)доп = 66
107
– 102 = 07 = (C3)доп;
C3 = 07 – 102 = – 93.
Из примера 2.1 и 2.2 следует, что при сложении чисел с разными знаками (C и C1) единица переноса из старшего разряда суммы является признаком положительного результата (C), отсутствие переноса (C1) – признаком отрицательного результата, при этом константа образования дополнительного кода нескомпенсирована и осталась в сумме.
При сложении чисел с одинаковыми знаками признаки противоположны: отсутствие переноса единицы из старшего разряда при положительных слагаемых (C2) является признаком положительного результата, наличие переноса при отрицательных слагаемых (C3) – признаком отрицательного, при этом одна константа компенсируется переносом, а вторая сохраняется в сумме. Эти же признаки в суммах (C2 и C3) указывают на отсутствие переполнения разрядной сетки для записи результатов (результаты имеют 2 десятичных разряда).
Пример 2.3. Дано: А = 59, В = 65. Найти C4 = A + B, C5 = –A – B.
(– A)доп = 102 –59 = 41; (– B)доп = 102 –65 = 35.
-
A
+
= 59B = 65
(
+
– A)доп = 41(– B)доп = 35
C4 = 124 > 102
C5 = 76 > | 102 |.
Здесь в обоих случаях при сложении чисел с одинаковыми знаками происходит переполнение разрядной сетки, признаками которого являются: наличие переноса из старшего разряда при положительных слагаемых (C4) и отсутствие переноса при отрицательных (C5). При получении суммы C5 перенос отсутствует, т.е. обе константы 102 остались в полученном результате. Следовательно, результат 76 – 102 = –24, –24 – 102 = –124 по модулю больше константы и в отведенные 2 разряда не умещается.
Рассмотрим образование кодов в двоичной системе счисления A = ±34. Знак числа кодируется 0 или 1, записывается перед старшим разрядом и отделяется для наглядности точкой, которая не является частью кода и в разрядной сетке не отражается. Для простоты примем, что задана разрядная сетка в один байт, т.е. 8 двоичных разрядов, из которых один отводится под знак, а 7 для записи числа:
A10 = ±34 = A16 = ±22 = A2 = ±100010.
Примем константу для дополнительного кода: K10 = 28 = K2 = 101000 = 100000000, и константу для обратного кода: K10 = 28 –1 = K2 = 101000 – 1 = 11111111.
Таблица 1 – Прямой, обратный и дополнительный коды для чисел A = 34 и A = –34, варианты их расчета.
Число |
[A]пк |
[A]ок |
[A]дк |
100010 |
00100010 |
00100010 |
00100010 |
|
|
1
–
|
1
–
|
|
|
00100010 |
00100010 |
–100010 |
10100010 |
11011101 |
11011110 |