bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [134]
АВС [6]
КПиЯП [77]
ОАиП [305]
ОКТ [77]
СиСПО [8]
Форма входа
Логин:
Пароль:
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ПОИТ » ОКТ

ПОИТ (д.), ОКТ, Контрольная работа №1, вар.3, 2016
Подробности о скачивании 16.10.2016, 14:53
Решение:
Преобразуем заданные числа в двоичную систему счисления:
А=549310 ,= 10101011101012, В = - 191110 = -111011101112.
Определим количество разрядов для модульной части записи чисел, учитывая не только значения используемых операндов, но и ожидаемые результаты выполнения заданных операций. Исходя из абсолютного значения операндов разрядность представления модульной части n должна быть равна 13. Учитывая то, что в подлежащих реализации выражениях над числами выполняется только одна операция (или сложения, или вычитания), длину модульной части необходимо взять на один разряд больше, т.е. n = 14.
Избавляясь от операции вычитания, приводим заданные выражения к виду
С1= А+В, С2=А+(-В), С3= В+(-А), С4=(-А) +(-В).
Таким образом, в подлежащих реализации выражениях в качестве операндов присутствуют следующие величины: A , -A, B, -B. Представим их в прямом и дополнительном коде
[А]пр = 0. 01010101110101, [А]дк = 0. 01010101110101,
[-А] пр = 1. 01010101110101, [-А] дк = 1. 10101010001011,
[В] пр = 1. 00011101110111, [В] дк = 1. 11100010001001,
[-В] пр = 0. 00011101110111, [-В] дк = 0. 00011101110111.

[-А] пр = 1. 01010101110101.
Найдем запись заданного числа в дополнительном коде:
[-А] д : для определения модульной части прибавим к невключенной границе диапазона ( 2n = 214 = 100000000000000) число В:
100000000000000 +(-1010101110101) = 10101010001011
и тогда [-А] д = 1. 10101010001011.

[В] пр = 1. 00011101110111.
Найдем запись заданного числа в дополнительном коде:
[В] д : для определения модульной части прибавим к невключенной границе диапазона ( 2n = 214 = 100000000000000) число В:
100000000000000 +(-11101110111) = 11100010001001
и тогда [В] д = 1. 11100010001001.

Используя сформированный дополнительный код, реализуем выражения для С1,С2, С3, С4.
С1: 0. 01010101110101 - [A] дк
+ 1. 11100010001001 - [B] дк
10.00110111111110 - [C1] дк=[C1] ПК
При выполнении сложения в данном случае возникла единичка переполнения знакового поля. При работе с дополнительным кодом она игнорируется (она перечеркнута).
С2: 0. 01010101110101 - [A] дк
+ 0. 00011101110111 - [-B] дк
0.01110011101100 - [C2] дк =[C2] пк

С3: 1. 11100010001001 - [-A] дк
+ 1. 10101010001011 - [B] дк
1 1.10001100010100 - [C3] дк
1.01110011101100 - [C3] пк.

С4: 1. 10101010001011 - [-A] дк
+ 0. 00011101110111 - [-B] дк
1.11001000000010 - [C4] дк
1.00110111111110 - [C4] ПК
В данном случае также возникло переполнение знакового поля, которое игнорируется.

2.

Решение:

Задание 1.2
А В
порядок мантисса порядок мантисса
з аз з аз з аз з аз код опер
- 2 - 0.56 0 + 0.51 о -
Найдём разность С1 чисел А и В, представленных с плавающей точкой, если А и В представлены в виде порядков, соответственно [ап] и [вп] и мантисс, соответственно [а м] и [в м],
где [а п] = -0102, [а м] =-0.1000112,
[в п] = 0002, [в м] = 0.1000002.
Представим порядки и мантиссы в прямом коде:
[а п]пр = 1.010, [а м]пр =1.100011,
[в п]пр = 0.000, [в м]пр = 0.100000.

При выполнении операции необходимо использовать обратный код.
[а п]о: модульная часть: (23-1) + (-010) = 101, тогда [а п]о= 1.101
[в п]о = 0.000.
Избавляясь от операции вычитания, приводим заданное выражение к виду
С1= А+(-В).
[-в п]о: модульная часть: (23-1) + (-000) = 111, тогда [-в п]о= 1.111.
Выравнивание порядков: из порядка первого числа вычитаем порядок второго числа:
1.101 [а п]о
1.111 [-в п]о
1.100 – разность порядков в обратном коде,
1.010 - разность порядков в прямом коде.
Так как знак разности порядков отрицательный, то в качестве общего порядка, а следовательно, и предварительного значения порядка искомого результата С1п`, берется порядок второго числа (вп). Для того чтобы взять в качестве порядка первого числа порядок второго числа, т.е. увеличив его порядок на 2, необходимо мантиссу этого меньшего числа умножить на 2-2, т.е. выполнить её арифметический сдвиг на два разряда вправо.
Таким образом, будем иметь после выравнивания следующую форму представления операндов:
[а м`] пр = 1.001000,
[в м`] пр = 0.100000.
После выравнивания порядков можно определить предварительное значение мантиссы С1` как
С1`=[а м`] пр - [в м`]пр.
[а м`]о: модульная часть: (26-1) + (-001000) = 110111, тогда [а м`]о= 1.110111
Избавляясь от операции вычитания, приводим выражение С1`=[а м`] пр - [в м`]пр к виду С1`=[а м`] пр + [-в м`]пр.
[-в м`]о: модульная часть: (26-1) + (-100000) = 011111, тогда [-в м`]о = 1. 011111.

11.110111 -[а м`] о
+ 1 1.011111 -[-в м`]о
111.010110 - [С1`]о.
10.101000 - [С1`]пр,.
Из записи [С1`]дк, полученной после вычитания мантисс операндов с выровненными порядками, видно, что нормализация представления результата нарушена. Поэтому для данного примера необходимо выполнить этап устранения нарушения нормализации.
В данном случае нарушение нормализации слева от точки, так как получено [С1`]пк с ненулевой целой частью. Для того чтобы привести полученную предварительную мантиссу к нормализованной форме, достаточно её разделить на 2, то есть выполнить её арифметический сдвиг вправо. В результате будем иметь окончательное значение мантиссы:
С1 = С1` *2-1=10.101000*2-1= 11.110100.
Деление мантиссы С1` на 2 сопровождается изменением ранее найденного предварительного значения порядка результата С1п` на +1.
00.000 [с1 п] пр `
+ 00.001 +1
00.001 [с1 п] пр
После устранения нарушения нормализации окончательный результат будет иметь вид
С1{ [c1 п ] пр =00.001, [c1 м ] пр = 11.110100}.
Категория: ОКТ | Добавил: Katarzynoczka
Просмотров: 634 | Загрузок: 14
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]