
- •Исходные числа к выполнению задания 1
- •Исходные числа к выполнению задания 2
- •Исходные числа к выполнению задания 3
- •Делимого делителя частного
- •1 Этап. Для выполнения первого этапа наборы аргументов в сндф представляют их эквивалентами в двоичной форме:
- •Значения аргументов и логической функции к заданию 4
- •Стадии определения сокращенной формы логической функции
- •2 Этап. Переход от сокращенной формы логической функции к минимальной форме осуществляется при помощи импликантной матрицы (табл.7).
- •«Арифметические и логические основы вычислительной техники»
Исходные числа к выполнению задания 3
Номер варианта |
А(10) |
В(10) |
С(10) |
D(10) |
1 |
62 |
-8 |
-258 |
342 |
2 |
53 |
-13 |
-126 |
240 |
3 |
36 |
-10 |
-451 |
115 |
4 |
42 |
-9 |
-77 |
432 |
5 |
28 |
-5 |
-151 |
327 |
6 |
44 |
-16 |
-623 |
159 |
7 |
38 |
-7 |
-233 |
341 |
8 |
55 |
-12 |
-132 |
428 |
9 |
49 |
-15 |
-218 |
525 |
10 |
65 |
-11 |
-771 |
231 |
11 |
32 |
-9 |
-316 |
825 |
12 |
25 |
-10 |
-54 |
421 |
13 |
44 |
-13 |
-440 |
106 |
14 |
36 |
-15 |
-108 |
524 |
15 |
58 |
-17 |
-136 |
229 |
16 |
41 |
-12 |
-247 |
119 |
17 |
61 |
-17 |
-451 |
321 |
18 |
57 |
-14 |
-68 |
297 |
19 |
53 |
-10 |
-373 |
421 |
20 |
33 |
-7 |
-182 |
35 |
21 |
49 |
-18 |
-157 |
275 |
22 |
34 |
-9 |
-468 |
133 |
23 |
61 |
-13 |
-49 |
295 |
24 |
37 |
-15 |
-480 |
309 |
25 |
48 |
-11 |
-236 |
791 |
26 |
59 |
-21 |
-140 |
449 |
27 |
42 |
-9 |
-167 |
407 |
28 |
51 |
-11 |
-362 |
281 |
29 |
37 |
-14 |
-178 |
62 |
30 |
63 |
-17 |
-427 |
320 |
При сложении чисел возможны случаи, когда результат не помещается в разрядную сетку цифрового устройства (переполнение сетки). Переполнение фиксируется, если имеется перенос в знаковый разряд суммы при отсутствии переноса из знакового разряда (положительное переполнение) или имеется перенос из знакового разряда при отсутствии переноса в знаковый разряд (отрицательное переполнение). Например, в формате 4–разрядной сетки складываются числа: Х = 510 = 1012 и Y = 610 = 1102; А = - 610 = - 1102 и В = - 710 = - 1112. Представим числа в дополнительном коде:
[Х]доп = 0101; [Y]доп = 0110; [А]доп = 1010; [В]доп = 1001. Выполним операции арифметического сложения кодов:
+ [Х]доп
= 0101 + [А]доп = 1010
[Y]доп = 0110 [В]доп
= 1001
[S]доп = 1011 [S]доп = 10011
В первом случае имеется перенос в знаковый разряд суммы и отсутствует перенос из знакового разряда, а во втором имеется перенос из знакового разряда при отсутствии переноса в знаковый разряд. Такое сочетание переносов свидетельствует о переполнении разрядной сетки. Если произвести логический сдвиг результатов на один разряд вправо без отбрасывания младших разрядов, то получим коды чисел, соответствующие правильным результатам сложения:
[S] доп = 01011 [S] доп = 10011
[S] пр = 01011 [S] пр = 11101
S = +10112 = 1110; S = - 11012 = - 1310.
Однако, полученные коды не умещаются в рассматриваемой 4–разрядной сетке.
Для правильных дробей, представляемых в форме с фиксированной точкой, одноименные весовые разряды также имеют одинаковые позиции в разрядной сетке. В связи с этим методика выполнения операции сложения правильных дробей, включая и признаки переполнения разрядной сетки, ничем не отличаются от методики сложения целых чисел.
Операцию алгебраического сложения чисел в форме с плавающей точкой можно представить последовательностью действий, определяемых выражением:
M x d k + M y ∙ d p = (M x ∙ d k-p + M y) d p = (M x, выр. + М у) d p = М Z ∙ d p , (8)
где Мх. и Му – соответственно мантиссы слагаемых чисел Х и Y; Мz – мантисса числа Z, полученного в результате сложения; d – основание используемой системы счисления; k и p – соответственно значение меньшего и большего порядков слагаемых чисел; Mx, выр – выровненная мантисса слагаемого, имеющего меньший порядок.
В соответствии с выражением (8) операцию алгебраического сложения чисел в форме с плавающей точкой проводят в несколько этапов:
Выравнивание порядков. На данном этапе производится выравнивание мантиссы числа с меньшим порядком относительно мантиссы числа с большим порядком, чтобы вес одноименных разрядов мантисс слагаемых был одинаковый. Выравнивание мантиссы меньшим порядком состоит в ее арифметическом сдвиге вправо на количество разрядов, равное разности порядков слагаемых чисел. Процедура выравнивания в сторону большего порядка производится с тем, чтобы в результате не получить мантиссы с абсолютным значением больше единицы.
Сложение мантисс. Выровненные мантиссы чисел складываются в дополнительном коде аналогично сложению чисел с фиксированной точкой. Порядок числа, полученного в результате сложения, равен большему порядку из слагаемых чисел.
Нормализация результата. При сложении мантисс возможны случаи переполнения разрядной сетки (нарушение нормализации слева от точки). Данная ситуация фиксируется с помощью признаков, аналогичных признакам сложения чисел с фиксированной точкой. Восстановление нормализации производится путем сдвига суммы мантисс на один разряд вправо, а порядок числа увеличивается на единицу. Возможны также случаи, когда в сумме мантисс могут быть только нули в старших разрядах (нарушение нормализации справа от точки). В этих случаях сумма мантисс сдвигается влево на такое количество разрядов, чтобы старшая цифра была отлична от нуля, а порядок числа уменьшается на количество произведенных сдвигов. В случае, если все разряды суммы мантисс равны нулю, нормализация не производится и порядок числа устанавливается нулевым.
Например, складываются числа Х = 1110 = 10112, Y = - 2010 = - 101002.
П
редставим
слагаемые в формате двух байтов с
плавающей точкой в нормализованном
виде:
Определим разность порядков слагаемых, изменив знак порядка числа Y (большего порядка) и представив порядки в дополнительном коде:
p
[10000101]пр [11111011]доп
+
k [00000100]пр [00000100]доп
(k - p) [11111111]доп [10000001]пр - 000000012 = -1 10.
Исходя из полученного результата, произведем сдвиг мантиссы числа Х на один разряд вправо:
М Х
= М Х, выр
= 00101100.
Произведем операцию сложения мантисс в дополнительном коде:
Поскольку в старшем разряде модуля суммы мантисс находится нуль, то необходимо провести нормализацию результата. Для этого модуль суммы мантисс сдвигается на один разряд влево при уменьшении порядка числа на единицу. Результат сложения рассматриваемых чисел в итоге будет иметь вид:
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Правила сложения двоично–кодированных десятичных чисел зависят от того, какой принцип кодирования выбран для представления десятичных цифр. При использовании кода 8421 сложение выполняется путем суммирования двоичных тетрад и путем введения по тетрадной коррекции результата (корректирующей поправки). Корректирующая поправка вводится при наличии переноса из разряда тетрады, имеющего вес 8, или при наличии одновременно единиц в разрядах с весом 8 и 4 или 8 и 2.
Рассмотрим примеры сложения отдельных двоичных тетрад и переносов, которые могут появиться из результатов сложения предыдущих тетрад:
В первом примере коррекция суммы не требуется, так как результат сложения получается меньше десяти единиц. Во втором примере имеется перенос из старшего разряда в следующую тетраду, при котором сумма уменьшается не на десять, как необходимо для двоичной системы, а на 16 единиц. Следовательно, необходима коррекция в количестве шести единиц. В третьем примере сумма в тетраде составляет больше десяти единиц. В этом случае добавляется корректирующая поправка из шести единиц, при которой происходит перенос в следующую тетраду и компенсация недостающих единиц в данной тетраде.
При алгебраическом сложении многоразрядных десятичных чисел, представленных в коде 8421, так же как и при сложении чисел в форме с фиксированной точкой, используется представление в дополнительном коде. Дополнительный код положительных чисел совпадает с представлением в прямом коде. Формирование дополнительного кода отрицательных чисел рассмотрим на примере десятичного числа:
Х = - 82510 = - 1000 0010 01012-10 → [1 1000 0010 0101]пр,
Прибавим во все тетрады прямого кода корректирующую поправку:
1 1000 0010
0101
+ 0110 0110
0110
1 1110 1000
1011
После инверсии цифр в разрядах (кроме знакового) получим обратный код числа: [X]обр =1 0001 0111 0100.
Дополнительный код получим путем прибавления единицы к младшему разряду обратного кода: [X]доп = 1 0001 0111 0101.
Принцип алгебраического сложения многоразрядных чисел, представленных в коде 8421, рассмотрим на основе сложения отрицательного числа Х из предыдущего примера и положительного числа Y = 28710 = 0010 1000 01112 – 10 → [0 0010 1000 0111]пр = [0 0010 1000 0111]доп
Выполним операцию сложения дополнительных кодов чисел:
При суммировании получено отрицательное число (1 – в знаковом разряде), представленное в дополнительном коде. Для преобразования полученного результата в прямой код необходимо в каждую тетраду прибавить корректирующую поправку, затем нужно произвести инверсию цифр в тетрадах и прибавить единицу в младший разряд:
В цифровых устройствах умножение с фиксированной точкой сводится к циклическому проведению операций алгебраического сложения и арифметического сдвига. При использовании алгоритма умножения Бута сомножители должны представляться в дополнительном коде. Результат произведения также оказывается представленным со знаковым разрядом в дополнительном коде. Алгоритм Бута удобно рассмотреть с помощью упрощенной схемы множительного устройства, приведенного на рис. 1, а. Регистры R3, R2 и служебные анализируемые разряды С1, С0 объединены между собой так, что можно одновременно производить арифметический сдвиг их содержимого вправо. Разряд t регистра R3 используется при сдвиге только в случае переполнения разрядной сетки. Счетчик циклов Сч используется для фиксации выполнения необходимого количества сдвиговых и суммирующих операций. В регистре R3 формируются старшие разряды, а в R2 – младшие разряды произведения. Схема алгоритма Бута приведена на рис.1, б.
Да
Рис. 1. Схемы: а – множительное устройство; б – алгоритм Бута.
В исходном состоянии в регистры R1 и R2 записываются множимое и множитель. В регистр R3 и анализируемые разряды С1, С0 записываются нули. В счетчик циклов записывается целое число n, равное количеству разрядов множителя включая знаковый разряд. Следующий этап - арифметическом сдвиг на один разряд вправо содержимого регистров R3, R2 и разрядов С1, С0. Далее производится анализ содержимого разрядов С1 и С0. Если С1=1, а С0=0, то множимое складывается с регистром R3 как отрицательное число в дополнительном коде. Если С1 = 0, а С0 = 1, то множимое складывается с регистром R3 как положительное число.
В каждом цикле рассмотренных операций выполняется вычитание единицы из содержимого счетчика, и при достижении им нулевого значения происходит выход из вычислительного цикла.
Рассмотрим использование алгоритма Бута на примере умножения положительного числа Х = +1110 = 10112 на отрицательное число Y = - 710 = - 01112 . Представим числа в формате байта в дополнительном коде: [X]доп = 00001011; [Y]доп = 11111001. Изменим знак числа Х и представим его в дополнительном коде: [-Х]доп = 11110101.
Последовательность выполняемых операций при умножении рассматриваемых чисел будет иметь такой вид:
Преобразуя полученный результат в прямой код, в итоге получим:
[111111110110011]доп → [100000001001101]пр → - 1001101 2 = - 77 10.
При выполнении операции деления чисел, представленных в форме с фиксированной точкой, производится раздельное определение знака и абсолютного значения частного. Определение знака частного производится путем сложения по модулю 2 знаковых разрядов: делимого и делителя. Полученный результат добавляется к цифровой части частного.
Определение абсолютного значения частного сводится к последовательным вычитаниям делителя сначала из делимого, а затем из образующихся в процессе вычитания сдвигаемых остатков. Формирование частного начинается со старших разрядов. Алгоритм деления с неподвижным делителем без восстановления остатка можно представить следующей последовательностью операций:
Сдвиг делимого на один разряд влево.
Вычитание делителя из делимого (сложение модуля делителя как отрицательного числа в дополнительном коде).
Если полученный остаток положительный, то цифре частного присваивается значение 1, а если остаток отрицательный, то присваивается 0.
Если полученный остаток положительный, то после его сдвига на один разряд влево из него вычитается делитель, а если полученный остаток отрицательный, то после его сдвига влево к нему делитель прибавляется.
Операции повторяются с пункта 3.
Указанные операции повторяются до тех пор, пока не будут сформированы значения всех последующих разрядов частного, обеспечивающих необходимую точность результата. Делимое обычно представляется с удвоенным количеством разрядов по сравнению с делителем и частным.
При выполнении деления возможен случай получения отрицательного последнего остатка. Для получения положительного остатка к отрицательному добавляется делитель в прямом коде. Например, выполним деление числа X=+6110=+1111012 → [00111101]пр на число Y= -1410=-11102→ [10001110]пр. Знак частного определится так:
Знак Знак Знак