В системах счистления в остаточных классах (ССОК) двоичные функции
можно представлять в полиномальном виде.
Умножение - AND
Сложение - XOR (т.е. сложение но в пределах 1 бита):
F = A0 (+) A1*X1 (+) A2*X2 (+) A3*X1*X2
----------------------------------------------------------------------
X1X2 F
----------------------------------------------------------------------
00 01 10 11 A0 A1 A2 A3 Имя
----------------------------------------------------------------------
0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1 AND
0 0 1 0 0 1 0 1 x1<-x2
0 0 1 1 0 1 0 0 x1
0 1 0 0 0 0 1 1 x2<-x1
0 1 0 1 0 0 1 0 x2
0 1 1 0 0 1 1 0 XOR
0 1 1 1 0 1 1 1 OR
1 0 0 0 1 1 1 1 NOR
1 0 0 1 1 1 1 0 EQV
1 0 1 0 1 0 1 1 x1->x2
1 0 1 1 1 1 0 1 x2->x1
1 1 0 0 1 1 0 0 x1#
1 1 0 1 1 0 1 0 x2#
1 1 1 0 1 0 0 1 NAND
1 1 1 1 1 0 0 0 1
----------------------------------------------------------------------
--------------------------------------------
0 = 0
AND(x1,x2) = x1*x2
x1<-x2 = x1 (+) x1*x2
x1 = x1
x2<-x1 = x2 (+) x1*x2
x2 = x2
XOR = x1 (+) x2
OR = x1 (+) x2 (+) x1*x2
NOR = 1 (+) x1 (+) x2 (+) x1*x2
EQV = 1 (+) x1 (+) x2
x1->x2 = 1 (+) x2 (+) x1*x2
x2->x1 = 1 (+) x1 (+) x1*x2
x1# = 1 (+) x1
x2# = 1 (+) x2
NAND = 1 (+) x1*x2
1 = 1
--------------------------------------------
Пример:
X1 X2 | F | A0 A1*X1 A2*X2 A3*X1*X2
-------+---+----------------------------------
0 0 | 1 | 1 0 0 0
0 1 | 1 | 1 0 0 0
1 0 | 0 | 1 1 0 0
1 1 | 0 | 1 1 0 0
Как вычислять:
X1 X2 | F | A0 A1*X1 A2*X2 A3*X1*X2 | A0 A1 A2 A3
-------+---+----------------------------------+-----------------
0 0 | 1 | ? 0 0 0 | ? ? ? ?
0 0 | 1 | 1 0 0 0 | ? ? ? ?
0 0 | 1 | 1 0 0 0 | 1 ? ? ?
-------+---+----------------------------------+-----------------
0 1 | 0 | 1 0 ? 0 | 1 ? ? ?
0 1 | 0 | 1 0 1 0 | 1 ? ? ?
0 1 | 0 | 1 0 1 0 | 1 ? 1 ?
-------+---+----------------------------------+-----------------
1 0 | 1 | 1 ? 0 0 | 1 ? 1 ?
1 0 | 1 | 1 0 0 0 | 1 ? 1 ?
1 0 | 1 | 1 0 0 0 | 1 0 1 ?
-------+---+----------------------------------+-----------------
1 1 | 1 | 1 0 1 ? | 1 0 1 ?
1 1 | 1 | 1 0 1 1 | 1 0 1 ?
1 1 | 1 | 1 0 1 1 | 1 0 1 1
Собственно логическую функцию одной переменной можно представить в виде
полинома 1 степени:
F(x) = a0 + a1 * x (пишем + подразумеваем (+)
------------------------------------
a1a0
x 00 01 10 11
------------------------------------
0 0 1 0 1
1 0 1 1 0
------------------------------------
F 0 1 x x#
------------------------------------
Функции с большим числом переменных получаются перемножением полиномов
функций с одной переменной.
Например для двух переменных:
F(x1,x2) = (a0 + a1*x1) * (b0 + b1*x2) =
= a0*b0 + a1*b0*x1 + a0*b1*x2 + a1*b1*x1*x2 =
----- ----- ----- -----
= A0 + A1 * x1 + A2 * x2 + A3 * x1 * x2