В системах счистления в остаточных классах (ССОК) двоичные функции можно представлять в полиномальном виде. Умножение - 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