Умножение GF - это полиномиальное умножение, поэтому нет переносов.Таким образом, 111 * 011 = 1001 и 1001 по модулю 1011 равно 010. Однако рассмотрим случай 100 * 100 = 10000. В этом случае вам необходимо выполнить два шага «деления» (аналогично вычислению CRC с использованием двоичной математики низкого уровня, вместо которой используется XORвычитать).
10
-------
1011 | 10000
1011
----
110
000
---
110
Итак, 100 * 100, мод 1011 = 110.
Вы можете создать таблицу антилогов и таблицу журналов.Для этого поля GF (8) = GF (2 ^ 3), основанного на x ^ 3 + x + 1, все 7 ненулевых чисел являются степенью 1x + 0 (hex 2):
0 1 2 3 4 5 6 antilog table
001 010 100 011 110 111 101
001 010 011 100 101 110 111 log table
0 1 3 2 6 4 5
Используя таблицы, a * b = alog ((log (a) + log (b))% 7).100 * 100 = alog ((log (100) + log (100))% 7) = alog ((2 + 2) & 7 = alog (4) = 110. 110 * 111 = alog ((log (110) + log)(111))% 7) = alog ((4 + 5)% 7) = alog (2) = 100.
Вы можете устранить необходимость в% 7, удвоив таблицу antilog, таблицу журналаостанется прежним:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 antilog table
001 010 100 011 110 111 101 001 010 100 011 110 111 101
a * b = alog (log (a) + log (b)). Также для деления: a / b = alog (7 + log (a) -log (б)).