ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.12.2023
Просмотров: 446
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
30
Пример:
А=0,01011
[A]
пк
=0,01011
В=0,00111
+
[В]
пк
=0,00111
А +В=0, 10010
[A]
пк
+ [В]
пк
=1,10010
А=-0,01011
[A]
пк
=1,01011
В=-0,00111
+
[В]
пк
=1,00111
А+В =-0,10010
[A]
пк
+ [В]
пк
=1,10010
Сложение прямых кодов чисел, имеющих разные знаки осуще- ствляется по правилу вычитания мантисс многоразрядных двоичных чисел. Вычитание всегда осуществляется из большего по абсолютной величине числа меньшего. Результату присваивается знак большего числа.
Пример:
А= 0,01011
[A]
пк
=0,01011
В=-0,00111
-
[В]
пк
=1,00111
А +(-В)=А -В = 0,00100
[A]
пк
- [В]
пк
=0,00100
А =-0,01011
[A]
пк
=1,01011
В = 0,00111
-
[В]
пк
=0,00111
-А +В =-(А-В)=-0,00100
[A]
пк
- [В]
пк
=1,00100
Во всех случаях при возникновении переноса из старшего раз- ряда мантиссы в знаковый разряд фиксируется сбой нормальной ра- боты машины, вызванный переполнением разрядной сетки.
При сложении кодов чисел, имеющих разный знак удобнее пользоваться обратными и дополнительными кодами. В этом случае знаковый разряд участвует в сложении наравне с разрядами мантис- сы.
Пример: Обратные коды
А = - 0 , 0 1 0 1 1
[A]
ок
= 1 , 1 0 1 0 0
+
В = 0 , 0 0 1 1 1
+
[В]
ок
= 0 , 0 0 1 1 1
-А + В - 0 , 0 0 1 0 0 [A]
ок
+ [В]
ок
= 1 , 1 1 0 1 1 ⇒ -0 , 0 0 1 0 0
А = 0 , 0 1 0 1 1
[A]
ок
= 0 , 0 1 0 1 1
+
В = - 0 , 0 0 1 1 1
+
[В]
ок
= 1 , 1 1 0 0 0
А + (-В)= 0 , 0 0 1 0 0 1 0 , 0 0 0 1 1 ⇒ 0 , 0 0 1 0 0
+
При сложении обратных кодов двоичного числа единица переноса из знаковых разрядов прибавляется к младшему разряду результата.
31
Дополнительные коды
А = - 0 , 0 1 0 1 1 [A]
дк
= 1 , 1 0 1 0 1
В = 0 , 0 0 1 1 1 [В]
дк
= 0 , 0 0 1 1 1
[A]
дк
= 1 , 1 0 1 0 1
+
[В]
дк
= 0 , 0 0 1 1 1
[A]
дк
+ [В]
дк
= 1 , 1 1 1 0 0 ⇒ 1 , 1 1 0 1 1
ок
⇒ - 0 , 0 0 1 0 0
А = 0 , 0 1 0 1 1 [A]
дк
= 0 , 0 1 0 1 1
В = - 0 , 0 0 1 1 1 [В]
дк
= 1 , 1 1 0 0 1
[A]
дк
= 0 , 0 1 0 1 1
+
[В]
дк
= 1 , 1 1 0 0 1 1 0 , 0 0 1 0 0 ⇒ 0 , 0 0 1 0 0
В случае дополнительных кодов перенос из знаковых разрядов отбрасывается.
Выполнение операций умножения в кодах. При представлении двоичных чисел в виде кода для реализации операций умножения и деления проще всего использовать прямые коды двоичных чисел. В этом случае умножение и деление кодов осуществляется по правилам умножение и деления многоразрядных двоичных чисел. Знак резуль- тата определяется суммированием знаковых разрядов сомножителей по модулю 2, т.е. 0
⊕
0=0; 0
⊕
1=1;1
⊕
0=1; 1
⊕
1=0.
В большинстве бортовых ЦВМ для представления двоичных чи- сел используются дополнительные коды. Особенность выполнения умножения двоичных чисел, представленных в дополнительном коде, заключается в том, что если хоть один из сомножителей является от- рицательным, то результат будет неправильным. Для получения пра- вильного результата необходимо осуществить коррекцию произведе- ния.
Например, число X = - 0,1101 в дополнительном коде равно
[Х]
дк
= 1,0011, что может быть получено следующим образом
2 + Х = 10,0000 + (-0, 1101)= 1,0011.
Используя равенство [Х]
дк
= 2 + X, определим, как должен вы- глядеть правильный результат умножения в различных случаях: а)
Х > 0, Y > 0 б)
Х > 0, Y < 0
Z = X – Y; [Z]
дк
= Z;
Z = XY < 0; [Z]
дк
= 2 + Z;
[X
⋅
Y]
дк
= X
⋅
Y;
[X
⋅
Y]
дк
= 2 + X
⋅
Y;
32 в)
Х < 0, Y > 0 г)
Х < 0, Y < 0
Z = X
⋅
Y < 0; [Z]
дк
= 2 +Z;
Z = X
⋅
Y; [Z]
дк
= Z;
[X
⋅
Y]
дк
= 2 + X
⋅
Y;
[X
⋅
Y]
дк
= X
⋅
Y.
Для этих же вариантов, если просто перемножать дополнитель- ные коды, получаются следующие результаты: а)
Х > 0, Y < 0
[X]
дк
= Х; [Y]
дк
= Y,
[X]
дк
⋅
[Y]
дк
= X
⋅
Y = [X
⋅
Y]
дк
Результат правильный б) Х > 0, Y < 0
[X]
дк
= Х, [Y]
дк
= 2 + Y,
[X]
дк
⋅
[Y]
дк
= X
⋅
(2 +Y) = 2X + Х
⋅
Y.
Правильный результат равен 2 + Х
⋅
Y . в)
Х < 0, Y > 0
[X]
дк
= 2 + Х, [Y]
дк
= Y,
[X]
дк
⋅
[Y]
дк
= (2 + X)
⋅
Y = 2Y + Х
⋅
Y.
При правильном результате 2 + X
⋅
Y. г)
Х < 0, Y < 0
[X]
дк
= 2 + Х; [Y]
дк
= 2 + Y;
[X]
дк
⋅
[Y]
дк
= (2 + X)
⋅
(2 +Y) = 4 + 2X + 2Y - Х
⋅
Y; а нужно получить Х
⋅
Y .
Для получения правильного результата существует ряд способов выполнения операции умножения кодов с коррекцией. В бортовых
ЦВМ Орбита 10, Орбита 20, Ц-100, А-15А умножение осуществляет- ся по следующему правилу.
1. Умножаются мантиссы дополнительных кодов чисел, т.е. до- полнительные коды без знакового разряда.
2. К полученному произведению добавляется корректирующее слагаемое.
Корректирующее слагаемое, в свою очередь, формируется по следующему правилу: а) Если множитель отрицательный, то формируется дополни- тельный код отрицательной мантиссы множимого, такое число (ман- тисса) обозначается буквой М. б) Если множимое отрицательное, то формируется дополнитель- ный код от отрицательной мантиссы множителя. в) Если оба сомножителя отрицательные, то формируется и пер- вое и второе корректирующие слагаемые.
33
Пример:
I.
Х > 0, Y > 0
В БЦВМ [X]
дк
= Х; [Y]
дк
= Y
Перемножение осуществляется без учета знаковых разрядов.
Мантиссы кодов совпадают с кодами X У = [X]
дк
[Y]
дк
II.
Х > 0, Y < 0
[X]
дк
= Х; [Y]
дк
= 2 + Y
[X]
дк
= 0, мантисса Х
………………………
[Y]
дк
= 1,………… Например: 1,1011
∼
2 + Y
2 + Y 0,1011
∼
1 + Y
В БЦВМ перемножаются мантиссы кодов и формируется произ- ведение:
X ( 1 + Y) = X + ХУ
Результат пока все равно неверный, поэтому к нему прибавляет- ся корректирующее слагаемое K1:
X + ХY + К1 = 2 + ХУ
Отсюда K1 = 2 - X.
K1 получается путем формирования дополнительного кода от- рицательной мантиссы множимого (X).
X > 0 т.е. М
х
= X , где М - мантисса.
K1 = [-M
x
]
дк
= [-X]
дк
= 2 + (-Х) = 2 – Х.
Таким образом, сформировано первое корректирующее слагае- мое.
III. Х < 0, Y > 0
[X]
дк
= 2 + Х, М
х
= 1 + Х
[Y]
дк
= Y
Результат перемножения (1 + Х)
⋅
Y = Y + ХY требует введения корректирующего слагаемого
Y + Х
⋅
Y + К2 = 2 + ХY, отсюда К2 = 2 - Y.
Второе слагаемое формируется по правилу:
K2 = [-Y]
дк
= 2 + (-Y) = 2 – Y
IV. Х < 0, Y < 0
[X]
дк
= 2 + Х, М
х
= 1 + Х
[Y]
дк
= 2 + Y; М
y
= 1 + Y
(1 + X)
⋅
(1 + Y) = 1 + X + Y + XY
≠
XY.
1 + Y
34
В машине формируются два корректирующих слагаемых.
K1 = [-M
x
]
дк
= [-(1 + X)] = 2 + (-(1 + X)) = 1 – X.
K2 = [-Y]
дк
= -Y, так как Y < 0, то – Y > 0.
Прибавление корректирующих слагаемых дает:
1 + X + Y + XY + K1 + K2 = 1 + X + Y + X
⋅
Y + 1 – X – Y = 2 +
+X
⋅
Y
Сумма 2 + X
⋅
Y составляет 10,...... в двоичной системе счисле- ния.
Так как старшая единица в целой части выпадает из разрядной сетки, результат будет равен 0,...., что соответствует правильному произведению XУ.
Пример:
Х = -0,1011
Y = -0,1010
Получим результат перемножения чисел по обычным правилам двоичной арифметики:
1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1
+ 0 , 0 1 1 0 1 1 1 0
В БЦВМ:
[X]
дк
= 1,0101, М
х
= 0,0101 = 1 + Х
[Y]
дк
= 1,0110, М
y
= 0,0110 = 1 + Y
0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 + X + Y + X Y = 0 , 0 0 0 1 1 1 1 0
Корректирующие слагаемые равны
К1 = [-М
х
]
дк
= 1,1011
К2 = [-Y]
дк
= 0,1010
Прибавляя корректирующие слагаемые к произведению, полу- чим
0,00011110 + 1,1011 + 0,1010 = 0,01101110
Что соответствует правильному результату.
35
Операция деления двоичных чисел представленных дополни- тельными кодами сводится к операциям сложения (вычитания) и сдвига.
В БЦВМ операция деления является самой длительной и осуще- ствляется за несколько циклов, в каждом цикле определяется одна цифра частного. В первом цикле выполняется операция вычитания делимого и делителя, если знаки одинаковые или операция сложения, если знаки разные. При разных знаках частное формируется в обрат- ном коде, а после окончания деления к его младшему разряду при- бавляется единица для перевода в дополнительный код. В каждом по- следующем цикле выполняется либо операция сложения, либо опера- ция вычитания, при этом предыдущий остаток удваивается. Если ча- стное в данном разряде получилось равным нулю, то в следующем цикле выполняется операция вычитания, если единице, то сложение.
По знаковым разрядам очередного остатка в зависимости от знака де- лителя формируется соответствующая цифра частного.
Пример:
Х = - 0 , 0 1 1 0 1 1
Y = 0 , 1 0 0 1 11 0
Y
Х
,
−
=
1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 , 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0
[X]
дк
= 1,100101
[Y]
дк
= 0,1001
I цикл
[ ]
[ ]
[ ]
,...
Z
,...;
1 0
Z
0
ие переполнен
0
Y
X
0
дк дк
=
−
=
→
>
→
→
≤
→
+
1,100101 + 0,1001 = 1 0,001001;
[ ]
ок
Z
= 1,…
II цикл
[ ]
[ ]
[ ]
[ ]
1 0
0 0
2
Y
Y
X
ок ок дк дк
=
>
→
=
<
→
−
+
Z
Z
III цикл
[ ]
[ ]
[ ]
[ ]
1 0
0 0
4
Y
2
Y
Y
X
ок ок дк дк
=
>
→
=
≤
→
+
−
+
Z
Z
36
-0,001001 + 0,001001 = 0;
[ ]
ок
Z
= 1,00
[ ]
[ ]
01 1
01 0
ок дк
,
,
Z
Z
=
+
=
Z = - 0,11
1 2 3 4 5 6 7 8 9 ... 21
Задания
для самостоятельной работы
1. А = 0,101011,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
2. А = -0,100001 ,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
3. А = -0,000000,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
4. А = 0,000000,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
5. А = -0,100010,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
6. А = -0,0000100,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
7. А = -0,101001,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
8. А = 0,100001,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
9. А = 0,000001,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
10. А = 0,0010101,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
11. А = -0,101111,
ПК
ОК
ДК
A
A
A
]
[
,
]
[
,
]
[
- ?
12. Выполнить сложение чисел в прямом, обратном и дополни- тельном кодах: А = 0,010111 и В = -0,00101.
13. Выполнить сложение чисел в прямом, обратном и дополни- тельном кодах: А = -0,00111 и В = 0,10001.
14. Выполнить сложение чисел в прямом, обратном и дополни- тельном кодах: А = 0,0101 и В = -0,000101.
15. Выполнить сложение чисел в прямом, обратном и дополни- тельном кодах: А = 0,001111 и В = -0,10010.
16. Выполнить сложение чисел в прямом, обратном и дополни- тельном кодах: А = -0,000010 и В = 0,100001.
17. Определить произведение дополнительных кодов чисел
А = -0.1001 и В = 0.01.
18. Определить произведение дополнительных кодов чисел
А = 0.0111 и В = -0.1001 19. Определить произведение дополнительных кодов чисел
А = -0.11 и В = -0.101 20. Выполнить деление дополнительных кодов до четырех цифр после запятой. Делимое х = - 0.01011 и делитель у = 0.01101.
37 1.4 Общие сведения о функциях алгебры логики
Наука рассуждать (т.е. логика) была создана в IV веке до н.э. древнегреческим мыслителем Аристотелем. Он рассмотрел какие за- коны, приемы, формы присущи человеческому мышлению. Отсюда и название логики – формальная логика.
Основоположником математической логики считается немецкий математик Лейбниц. Он в XVII веке попытался сформулировать пер- вые логические исчисления.
На фундаменте, заложенном Лейбницем, другой математик,
Джордж Буль, отец писательницы Войнич, автора романа «Овод», ввел для логического построения особую алгебру. В отличие от обыч- ной, в ней символами обозначают не числа, а высказывания. Все вы- сказывания имеют всего только два значения – ложь или истина. Так как в двоичной системе счисления только две цифры 0 и 1, то правила алгебры логики приемлемы для двоичной СС.
1.4.1 Функции и операции
При синтезе и анализе схем цифровых устройств используется аппарат математической логики, объектом исследования которого яв- ляются двоичные функции
f
двоичных переменных
1 0
,...,
−
n
x
x
, назы- ваемые булевыми функциями или функциями алгебры логики:
)
,...,
(
1 0
−
=
n
x
x
f
f
Аппарат булевой алгебры имеет дело с переменными, отражаю- щими истинность или ложность высказываний: если высказывание истинно – ему ставится в соответствие значение x = 1, если ложно -
x
= 0.
Функция f , также как и ее аргументы, принимает значение 0 или 1.
Совокупность значений
1 0
,...,
−
n
d
d
аргументов
1 0
,...,
−
n
x
x
назы- вается набором длины n и обозначается через (
1 0
,...,
−
n
d
d
). Число
D , соответствующее набору, называется номером набора (таблица 1.2).
Множество наборов
)}
1 1
(
),...,
0 0
{(
=
W
характеризует область определения функции. Значение функции f на наборе с номером D обозначается через
D
f :
)
,...,
(
1 0
−
=
n
D
d
d
f
f