Лабораторная работа № 2. Тема: Представление чисел и арифметические операции в прямом, обратном и дополнительном кодах в машинах с плавающей запятой
Цель – освоить арифметические основы компьютерных операций при представлении чисел с плавающей запятой
Задание:
-
Произвести В МАШИНАХ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ алгебраическое сложение двоичных чисел А+В - в дополнительном коде, А+С - обратном коде , В+С - в модифицированном дополнительном коде, С + D - в модифицированном обратном коде.
Варианты заданий представлены в таблице 2.
Табл.2
№ варианта |
А |
B |
C |
D |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
23.11 14.66 17.36 23.23 32.12 10.14 15.32 21.56 22.47 19.32 14.71 15.73 17.43 23.81 32.92 10.83 15.95 21.65 22.75 19.75 |
-8.24 -9 .35 -7 .46 -6 .77 -17 .31 -5 .23 -7 .03 -9 .54 -6 .14 -4 .26 -8 .97 -5 .48 -7 .59 -8 .71 -11 .32 -3.23 -7 .74 -5 .56 -7 .15 -8 .27 |
-0.91 -0.81 -0.72 -0.92 -0.71 -0.81 -0.91 -0.51 -0.72 -0.83 -0.91 -0.61 -0.72 -0.82 -0.91 -0.81 -0.61 -0.72 -0.82 -0.71 |
-40.15 -37.17 -29.23 -45.32 -47.17 -36.15 -31.21 -34.22 -26.19 -27.18 -29.15 -23.21 -30.22 -37.16 -43.14 -27.15 -28.17 -41.23 -35.32 -38.19 |
21 22 23 24 25 |
32.92 10.83 15.95 21.65 22.75 |
-4 .26 -8 .97 -5 .48 -7 .59 -8 .71 |
-0.92 -0.71 -0.81 -0.91 -0.51 |
-23.21 -30.22 -37.16 -43.14 -27.15 |
Указания к выполнению:
-
Прочитать теорию о сложении чисел в машинах с плавающей запятой.
-
Вспомнить правила перевода дробных чисел в двоичную систему счисления (СС) и обратно. « Для перевода в двоичную СС число умножается на 2 и выделенные целые части записываются в прямом порядке. Для перехода из двоичной СС в десятичную число записывается как полином…» Более подробно смотри Компьютерная арифметика –pdf- файл или Системы счисления в Приложении 1.
-
Перевести в двоичную СС данные числа своего варианта.
-
Записать числа в виде мантиссы и порядка в прямом коде.
-
Выровнять порядки.
-
Записать числа в дополнительном или обратном коде.
-
-
Разобрать примеры , приведенные в Приложении 2.
-
Выполнить сложение в требуемом по заданию коде.
-
Провести проверку результата.
-
Ответить на контрольные вопросы.
-
Оформить отчет по лабораторной работе.
Сложение чисел в машинах с плавающей запятой
Существует естественная и нормальная форма представления чисел. При естественной форме место запятой, отделяющей целую часть числа от дробной, постоянно для всех чисел, с которыми работает цифровая машина,
При нормальной форме представления чисел любое число изображается в виде двух групп цифр: первая группа называется мантиссой, вторая – порядком.
Чтобы уяснить сущность представления числа в нормальной форме, обратимся к конкретному примеру. Возьмем число 525,34 в десятичной системе счисления. Это число можно представить в виде произведения двух сомножителей:
525,34 = 52,534 101
или
525,34 = 0,052534 104.
Очевидно, в общем случае всякое число N можно записать в виде произведения двух сомножителей:
N = m q p.
где m – дробное число;
p – целое число;
q – основание системы счисления.
Число N считается представленным в нормальной форме, если первый множитель m является правильной дробью, т. е. выполняется условие |m|<1. В таком случае множитель m называют мантиссой, а показатель степени p – порядком числа.
Число 525,34 для представления в нормальной форме необходимо преобразовать следующим образом:
525,34 = 0,52534 103.
Пусть в цифровой машине для изображения мантиссы отведено пять цифровых разрядов, а для изображения порядка – два. Тогда в нормальной форме число 525,34 будет записано так:
+ 52534 + 03.
Следует заметить, что изображение числа в нормальной форме неоднозначно, справедливы и следующие записи:
525,34 = 0,052534 104
525,34= 0,0052534 105 и т. д.
Порядок числа может быть не только положительным, но и отрицательным. Так, число 0,003427 можно представить в виде произведения:
0,003427 = 0,3427 10-2.
Соответственно запись числа в нормальной форме будет иметь следующий вид:
+ 3427 – 02.
Таким образом, порядок числа, записанного в нормальной форме, показывает положение запятой, если число изображать набором цифр мантиссы. Поскольку при разных порядках положение запятой бывает различным, машины с нормальной формой представления чисел называются машинами с плавающей запятой.
Например, число в двоичной системе счисления 1101,01 = 0,110101 10100. Здесь 10 – основание двоичной системы счисления. В нормальной форме число запишется так:
+ 110101 + 100.
Различают нормализованные и ненормализованные нормальные числа. Если в первом разряде мантиссы стоит цифра, отличная от нуля, число называют нормализованным, если же эта цифра – нуль, число называют ненормализаванным. Желательно хранить числа в машине в нормализованном виде, так как при этом не теряются последние разряды мантиссы.
При сложении чисел в машинах с плавающей запятой сначала уравниваются порядки слагаемых, а затем складываются мантиссы. Порядком суммы является общий порядок слагаемых. Уравнивание порядков заключается в том, что меньший порядок числа увеличивается до большего и при этом соответственно изменяется мантисса.
Мантиссы обычно складываются в одном из модифицированных кодов по правилам, рассмотренным выше. При этом могут встретиться три случая, которые мы рассмотрим на конкретных примерах.
Все записи даны в двоичной системе счисления применительно к ячейке машины с плавающей запятой. Вычисления производятся в модифицированном обратном коде.
Случай 1. Сложение происходит без переполнения разрядной сетки и нарушения нормализации.
В ячейках машины имеются следующие записи:
слагаемое Х 1 100100110 0 011
слагаемое Y 0 110001101 0 101
Сложение выполняется в несколько этапов.
Первый этап. Сдвиг вправо слагаемого Х (денормализация) с целью уравнивания его порядка 011 с порядком 101 слагаемого Y.
После сдвига запись слагаемого Х будет иметь вид:
Х 1 001001001 0 101.
Второй этап. Перевод мантисс Х и Y в модифицированный обратный код:
мантисса Х 11 110110110;
мантисса Y 00 110001101.
Третий этап. Сложение мантисс: Х 11 110110110+
Y 00 110001101
100 101000011+
'---------------® 1
X + Y 00 101000100.
Четвертый этап. Перевод суммы X + Y в прямой код 0 101000100 и запись результата:
Х+ Y 0 101000100 0 101.
Случай 2. Сложение происходит без переполнения разрядной сетки, но результат после перевода в прямой код оказывается ненормализованным. Такой случай носит название нарушения нормализации вправо.
Перед записью результата в ячейку производится нормализация.
В ячейках машины имеются записи:
слагаемое Х 0 100100110 0 100
слагаемое Y 1 100101010 0 110
Сложение выполняется в пять этапов.
Первый этап. Уравнивание порядков. После сдвига первое слагаемое запишется в ячейке следующим образом:
Х 0 001001001 0 110.
Второй этап. Перевод обеих мантисс в модифицированный обратный код:
Х 00 001001001;
Y 11 011010101.
Третий этап. Сложение мантисс:
+ Х 00 001001001
Y 11 011010101
Х + Y 11 100011110
Четвертый этап. Перевод результата в прямой код:
X + Y 1 011100001 0 110.
Пятый этап. Нормализация и запись результата.
Х + Y 1 111000010 0 101.
Случай 3. При сложении происходит переполнение разрядной сетки. Чтобы определить порядок работы в этом случае, необходимо отметить два обстоятельства:
а) причиной переполнения является то, что сумма |Х+Y|>=1. Очевидно, если бы после уравнивания порядков мантиссы были дополнительно сдвинуты на один разряд вправо, переполнения бы не произошло;
б) признаком переполнения является наличие разных цифр в знаковых разрядах, причем комбинация 01 указывает на то, что сумма положительна, а комбинация 10 – на то, что сумма отрицательна. Следовательно, по левому из двух знаковых разрядов можно сразу установить знак суммы (0 à (+); 1 à ( – ) ).
Исходя из этих обстоятельств, можно сразу получить сумму без повторных вычислений. Для этого нужно сдвинуть результат сложения на один разряд вправо (увеличив при этом порядок на единицу), а затем во второй знаковый разряд занести цифру, стоящую в левом разряде. Эти операции машина выполняет автоматически, после того как устройство сравнения выработает сигнал, свидетельствующий о наличии разных цифр в знаковых разрядах. Далее машина работает, как и в предыдущих случаях. Данный случай переполнения разрядной сетки принято называть нарушением нормализации влево.
Пример.
Х 1 101011011 0 110;
Y 1 110001101 0 101.
Первый этап. Сдвиг второго слагаемого для уравнивания порядков:
Y 1 011000110 0 110.
Второй этап. Перевод мантисс в модифицированный обратный код:
Х 11 010100100;
Y 11 100111001.
Третий этап. Сложение мантисс:
Х 11 010100100
Y 11 100111001
110 111011101+
'---------------® 1
Х+Y 10 111011110
Произошло нарушение нормализации влево.
Четвертый этап. Сдвиг результата вправо:
11 011101111.
Пятый этап. Перевод в прямой код и запись результата:
1 10001 0000 0 111.
Вследствие сдвига вправо (четвертый этап) порядок увеличился на единицу (был 110, стал 111).