Вариант
12
№ варианта
|
Операнды
|
Задание 1 (ЧФЗ)
X+Y, X-Y, X*Y
|
Задание 2A,2
Б (ЧПЗ)
X+Y, X-Y, X*Y
|
Задание 2В (ЧПЗ)
X+Y, X-Y, X*Y
|
Задание
3 (2-10)
X+Y, X-Y, X*Y
|
№
12
|
X
Y
|
22
47
|
22.47
47.22
|
122.47
0.00004722
|
224
472
|
Задание 1.
Выполнить арифметические действия,
рассматривая операнды как двоичные целые числа в формате 2 байта (short int).
Определить модуль результата. Формат результата – 2 байта.
1.
Выполним
перевод чисел:
X = 22(10) =
0000 0000 0001 0110(2);
Y = 47(10) = 0000 0000 0010
1111(2).
2.
Выполним
операцию сложения для проверки в десятичной системе счисления:
Z = X+Y = 22(10) + 47(10)
= 69(10).
3.
Выполним
сложение (прямой код):
|
Машинный
код (2 байта)
|
В
десятичной системе
|
X
|
0000
0000 0001 0110
|
22
|
Y
|
0000
0000 0010 1111
|
47
|
Z = X+Y
|
0000
0000 0100 0101
|
69
|
4.
Выполним
операцию вычитания для проверки в десятичной системе счисления:
Z = X-Y = 22(10) – 49(10)
= -25(10).
Уменьшаемое X – прямой код,
вычитаемое Y –
дополнительный код
5.
Выполним
вычитание (с использованием дополнительного кода):
|
Машинный
код (2 байта)
|
В
десятичной системе
|
Y
|
0000
0000 0010 1111
|
47
|
Z
(обратный код)
|
1111
1111 1101 0000
|
|
Y
(дополнительный код)
|
1111
1111 1101 0001
|
- 47
|
X
|
0000
0000 0001 0110
|
22
|
Z = X–Y
(дополнительный
код)
|
1111
1111 1110 0111
|
|
Перенос
из знакового разряда отсутствует.
Число отрицательное, так как знаковый разряд равен 1.
Найдём
модуль результата
Z
|
|Z|
(обратный код)
|
0000 0000
0001 1000
|
|
|Z| (прямой
код)
|
0000 0000
0001 1001
|
25
|
6.
Выполним
операцию умножения для проверки в десятичной системе
Z = X*Y = 22(10)*47(10)
= 1034(10).
7.
Выполним
операцию умножения младшими разрядами вперёд:
Y=0000000000101111
|
0000000000010110 = X
|
|
|
0000000000010110
|
P1
|
|
00000000000010110
|
сдвиг на 1 разряд вправо
|
|
0000000000010110
|
P2
|
|
00000000001000010
|
P1+ P2
|
|
000000000001000010
|
сдвиг на 1 разряд вправо
|
|
0000000000010110
|
P3
|
|
000000000010011010
|
P1+ P2 + P3
|
|
0000000000010011010
|
сдвиг на 1 разряд вправо
|
|
0000000000010110
|
P4
|
|
0000000000101001010
|
P1+ P2 + P3
+P4
|
|
00000000000101001010
|
сдвиг на 1 разряд вправо
|
|
0000000000000000
|
P5
|
|
00000000000101001010
|
P1+ P2 + P3 +P4 +P5
|
|
000000000000101001010
|
сдвиг на 1 разряд вправо
|
|
0000000000010110
|
P6
|
|
000000000010000001010
|
P1+ P2 + P3 +P4 +P5 +P6
|
|
0000000000010000001010
|
сдвиг на 1 разряд вправо
|
Оставшиеся 10 нулей дадут сдвиг на 10
разрядов:
00000000000000000000010000001010
однако в разрядную сетку вносятся только
самые правые 16 бит:
0000010000001010
Z = X*Y=0000 0100 0000 1010 (2)=1024+8+2=1034(10)
Задание 2
А
Выполнить арифметические действия,
рассматривая операнды как ЧПЗ с основанием 2 в следующем формате: знак – 1 бит,
несмещённый порядок – 4 бита, мантисса – 11 бит
Формат результата – тот же. Округление
производить после приведения операнда к нормализованной форме. Результат
нормализовать.
X = 22.47(10); Y = 47.22(10).
1.
Преобразуем
дробную часть Х, равную 0.47(10), в двоичное число:
1. 2*0.47=0.94
(0)
2. 2*0.94=1.88
(1)
3. 2*0.88=1.76
(1)
4. 2*0.76=1.52
(1)
5. 2*0.52=1.04 (1)
6. 2*0.04=0.08 (0)
7. 2*0.08=0.16 (0)
8. 2*0.16=0.32 (0)
9. 2*0.32=0.64
(0)
10. 2*0.64=1.28 (1)
Таким образом, 0.47(10) =
0.0111100001(2), a X = 22.47(10) = 10110. 0111100001
(2).
2.
Представим
X в формате ЧПЗ, отбросив младшие разряды мантиссы после 11 (ненормализованное
число):
X = 10110.0111100001(2).
Порядок Px
ненормализованного числа равен нулю (четыре разряда – 0000).
Отсчитаем 11 цифр слева направо – мантисса
Qx =
10110.011110
3.
Нормализуем
X, для этого мантисса должна быть сдвинута вправо на 5 разрядов, соответственно
порядок должен увеличиться на 5:
Pнорм x=Px+5=0101(2)
Qнорм x = 0.
10110011110
Погрешность:
Dx=22.47–(22+0.25+0.0625+0,015625)= 22.47–22.328125=0,141875
4.
Преобразуем
дробную часть Y, равную 0.22(10), в двоичное число:
1. 2*0.22=0.44
(0)
2. 2*0.44=0.88
(0)
3. 2*0.88=1.76
(1)
4. 2*0.76=1.52
(1)
5. 2*0.52=1.04 (1)
6. 2*0.04=0.08 (0)
7. 2*0.08=0.16
(0)
8. 2*0.16=0.32
(0)
9. 2*0.32=0.64
(0)
10. 2*0.64=1.28 (1)
Таким образом, 0.22(10) =
0.0011100001(2), a Y = 47.22(10) = 101111.0011100001(2).
5.
Представим
Y в формате ЧПЗ, отбросив младшие разряды мантиссы после 11 разрядов
(ненормализованное число):
Y = 101111.0011100001(2)
Py=0000 Qy=101111.00111
Нормализуем
Y (мантисса сдвигается вправо на 6 разрядов):
Pнорм y=Py+6=0110(2)
Qнорм y =
0.10111100111
Погрешность: Dy=47.22–(47+0.125+0.03125)= 47.22–47.15625=0.06375
6.
Выполним
операцию сложения
Z = X+Y = 22.47(10)
+ 47.22(10) = 69.69(10).
|
Порядок
|
Мантисса
|
X
|
0101
|
10110011110
|
Y
|
0110
|
10111100111
|
Порядок Y больше,
поэтому выравниваем по нему порядок X:
|
X
|
0110
|
010110011110
|
Последняя единица выходит за
разрядную сетку
|
X
|
0110
|
01011001111
|
Y
|
0110
|
10111100111
|
Z=X+Y
|
0110
|
100010110110
|
Результат Z=2Pz*Qz=26*(1/2+1/32+1/128+1/256+1/1024+1/2048)=
=32+2+1/2+1/4+1/16+1/32=34,84375
Погрешность: Dz=69.69–34.84375=34,84625
7.
Выполним
операцию вычитания
Z = X-Y = 22.47(10)
- 47.22(10) = -24.75(10).
|
Порядок
|
Знак
|
Мантисса
|
X
|
0101
|
0
|
10110011110
|
Y
|
0110
|
1
|
10111100111
|
Порядок Y больше,
поэтому выравниваем по нему порядок X:
|
X
|
0110
|
0
|
010110011110
|
Последняя единица выходит за
разрядную сетку
|
X
|
0110
|
0
|
01011001111
|
Преобразуем мантиссу Y в
дополнительный код
|
Y
|
0110
|
1
|
10111100111 прямой
|
Y
|
0110
|
1
|
01000011000 обратный
|
Y
|
0110
|
1
|
01000011001 дополнительный
|
X
|
0110
|
0
|
01011001111
|
Z=X+Y
|
0110
|
1
|
10011101000 дополнительный
|
Z
|
0110
|
1
|
10011100111 обратный
|
Z
|
0110
|
1
|
01100011000 прямой
|
Перенос из знакового разряда отсутствует,
это означает, что знак результата определяется значением знакового разряда
(1), то есть результат отрицательный, число в дополнительном коде. Преобразуем
его в прямой код, инверсируя все разряды, кроме знакового.
Результат |Z|=2Pz*Qz=26*(1/4+1/8+1/128+1/256)=
=16+8+1/2+1/4=24,75, Z= –24,75
Погрешность: Dz=–24,75+24,75=0
8.
Выполним
операцию умножения
Z = X*Y = 22.47(10)*47.22(10)
= 1061.0334(10).
Pнорм x = 0101
Qнорм x = 0.
10110011110
Pнорм y = 0110
Qнорм у =
0.10111100111
Перемножим мантиссы сомножителей (вариант
умножения младшими разрядами вперёд):
Qнорм у
10111100111
|
Qнорм x
10110011110
|
|
|
10110011110
|
P1
|
|
010110011110
|
сдвиг на 1 разряд вправо
|
|
10110011110
|
P2
|
|
1000011011010
|
P1+ P2
|
|
01000011011010
|
сдвиг на 1 разряд вправо
|
|
10110011110
|
P3
|
|
10011101010010
|
P1+ P2 + P3
|
|
010011101010010
|
сдвиг на 1 разряд вправо
|
|
00000000000
|
P4
|
|
010011101010010
|
P1+ P2 + P3
+P4
|
|
0010011101010010
|
сдвиг на 1 разряд вправо
|
|
00000000000
|
P5
|
|
0010011101010010
|
P1+ P2 + P3 +P4 +P5
|
|
00010011101010010
|
сдвиг на 1 разряд вправо
|
|
10110011110
|
P6
|
|
1101101100010010
|
P1+ P2 + P3 +P4 +P5 +P6
|
|
01101101100010010
|
сдвиг на 1 разряд вправо
|
|
10110011110
|
P7
|
|
100100001010010010
|
P1+ P2 + P3 +P4 +P5 +P6+P7
|
|
0100100001010010010
|
сдвиг на 1 разряд вправо
|
|
10110011110
|
P8
|
|
1010001000110010010
|
P1+ P2 + P3 +P4 +P5 +P6+P7+P8
|
|
01010001000110010010
|
сдвиг на 1 разряд вправо
|
|
10110011110
|
P9
|
|
10101010111110010010
|
P1+ P2 + P3 +P4 +P5 +P6+P7+P8+P9
|
|
010101010111110010010
|
сдвиг на 1 разряд вправо
|
|
00000000000
|
P10
|
|
010101010111110010010
|
P1+ P2 + P3
+P4 +P5 +P6+P7 +P8 +P9
+P10
|
|
0010101010111110010010
|
сдвиг на 1 разряд вправо
|
|
10110011110
|
P11
|
|
1000010010011110010010
|
P1 + P2 + P3
+ P4 + P5 +P6 +P7 + P8
+ P9 + P10 + P11
|
|
01000010010011110010010
|
сдвиг на 1 разряд вправо
|
Мантисса результата Qz=0.01000010010011110010010
– не нормализована
Сложим порядки сомножителей, получим
порядок ненормализованного результата: Pz=0101+0110=1011
Для нормализации мантиссу необходимо
сдвинуть влево на 1 бит, следовательно, порядок необходимо уменьшить на 1
Qнорм z=0.
1000010010011110010010=0. 10000100100
(крайние правые 11 бит не помещаются
в разрядную сетку)
Pнорм z=1010
Результат: Z=2Pz*Qz=210*(1/2+1/64+1/512)=512+16+2=
530.
Погрешность: Dz=1061.0334–530=531.0334
Задание 3.
Выполнить арифметические действия над
операндами, представив их в двоично-десятичном коде.
1.
X
= 224(10) = 0010 0010 0100(2-10); Y = 472(10)
= 0100 0111 0010(2-10).
2.
Выполним
операцию сложения
Z=X+Y= 224(10)
+ 472(10) = 696(10).
X
|
0010
|
0010
|
0100
|
Y
|
0100
|
0111
|
0010
|
X+Y
|
0110
|
1001
|
0110
|
Результат: Z = 0110 1001 0110(2-10)
= 696(10).
3.
Выполним
операцию вычитания
Z = X – Y = 224(10)
– 472(10) = -248(10).
Представим |Y| в ДК с избытком 6:
с
|
0100
|
0111
|
0010
|
Y (обратный
код)
|
1011
|
1000
|
1101
|
|
|
|
+0001
|
Y
(дополнительный код)
|
1011
|
1000
|
1110
|
Выполним сложение:
X (прямой
код)
|
0010
|
0010
|
0100
|
Y
(дополнительный код)
|
1011
|
1000
|
1110
|
Переносы
|
1101
|
1010
|
10010
|
Нескорректированное
Z
(в дополнительном коде)
|
1101
|
1011
|
0010
|
Отсутствие переноса из старшей тетрады
является признаком того, что результат получился в дополнительном коде (т.е.
отрицательный).
Перейдем к нескорректированному
избыточному ПК:
Z (нескорр.,
ДК)
|
1101
|
1011
|
0010
|
Инверсия
Z
(нескорр., ДК)
|
0010
|
0100
|
1101
|
|
|
|
+0001
|
Z
(нескорр., прямой код)
|
0010
|
0100
|
1110
|
Произведём коррекцию результата:
Z
(нескорр., прямой код)
|
0010
|
0100
|
1110
|
+
коррекция
|
+0000
|
+1010
|
+1010
|
Z
(нескорр., прямой код)
|
0010
|
1110
|
1 1000
|
|
|
>1001
Требуется
коррекция +0110
|
|
Z
(нескорр., прямой код)
|
0010
|
10100
|
1 1000
|
Переносы отбросить
|
0010
|
0100
|
1000
|
Результат |Z|=0010
0100 1000(2-10)=248(10)
Поскольку ранее результат получался в ДК,
т.е. отрицательный, Z= –248
1. Выполним
операцию умножения
Z = X * Y = 224(10)
* 472(10) = 105728(10)
Для решения примера выберем
вариант перемножения "младшие разряды вперед". В соответствии с п.
1 алгоритма полагаем сумму частичных произведений P0=0. (Частичные
произведения будем обозначать Pi).
P1 =0100 0100 1000
(2-10)
P2 =0001 0101
0110 1000(2-10)
Р3 =1000 1001 0110(2-10)
Теперь можно вычислить сумму
первого, второго и третьего частичного произведений, т.е. результат.
Окончательный результат: Z = 0001 0000
0101 0111 0010 1000(2-10) = 105728(10).
|
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.