※計算が間違っていました。10/12
四則演算が出来るようになったので、多項式同士の掛け算、割り算をやってみます。
といっても特別なことがあるわけではありません。いわゆる普通の多項式演算です。違うのは加減算は XOR で行うこと、乗除算はαを使って計算することです。
まず掛け算から、
{(3Ch)X^3 + (15h)X^2 + (74h)X + (BCh)} * {(1Fh)X^2 + (2Dh)X + (E3h)}
まず項同士の掛け算になりますから、α表現に直します。前回の表を使います。
(α^77・X^3 + α^141・X^2 + α^10・X + α^71) * (α^113・X^2 + α^18・X + α^176)
手計算でやるような表現に直して、
α^77・X^3 + α^141・X^2 + α^10・X + α^71
x α^113・X^2 + α^18・X + α^176
--------------------------------------------------------------------
α^(77+176)・X^3 + α^(141+176)・X^2 + α^(10+176)・X + α^(71+176) ← α^254 を越えたら 255 を引きます。
α^253・X^3 + α^62・X^2 + α^186・X + α^247 :再掲、以下同様に、
α^95・X^4 + α^159・X^3 + α^28・X^2 + α^89・X
+ α^190・X^5 + α^254・X^4 + α^123・X^3 + α^184・X^2
--------------------------------------------------------------------------------
α^190・X^5 + (α^95 + α^254)・X^4 + (α^253 + α^159 + α^123)・X^3 + (α^62 + α^28 + α^184)・X^2 +(α^186 + α^89)・X + α^247
で、α^m とα^n の足し算はどうやるの?となるのですが、前回説明したように一旦バイナリ表現に戻さないといけません。
α^190 → AEh → 1010 1110
α^95 → E2h → 1110 0010
α^254 → 8Eh → 1000 1110
α^253 → 47h → 0100 0111
α^159 → 73h → 0111 0011
α^123 → C5h → 1100 0101
α^62 → DEh → 1101 1110
α^28 → 18h → 0001 1000
α^184 → 95h → 1001 0101
α^186 → 6Eh → 0110 1110
α^89 → E1h → 1110 0001
α^247 → 83h → 1000 0011
α^95 + α^254 = (1110 0010) xor (1000 1110) = 0110 1100 = 6Ch
α^253 + α^159 + α^123 = (0100 0111) xor (0111 0011) xor (1100 0101) = 1111 0001 = F1h
α^62 + α^28 + α^184 = (1101 1110) xor (0001 1000) xor (1001 0101) = 0101 0011 = 53h
α^186 + α^89 = (0110 1110) xor (1110 0001) = 1100 1111 = CFh
ということで、
(AEh)・X^5 + (6Ch)・X^4 + (F1h)・X^3 + (53h)・X^2 + (CFh)・X + 83h
となります。
同じ多項式同士で割り算もやってみます。
{(3Ch)X^3 + (15h)X^2 + (74h)X + (BCh)} / {(1Fh)X^2 + (2Dh)X + (E3h)}
(α^77・X^3 + α^141・X^2 + α^10・X + α^71) / (α^113・X^2 + α^18・X + α^176)
α^219・X + α^24
--------------------------------------------
α^113・X^2 + α^18・X + α^176 | α^77・X^3 + α^141・X^2 + α^10・X + α^71
α^77・X^3 + α^237・X^2 + α^140・X
-----------------------------------
α^137・X^2 + α^79・X + α^71
α^137・X^2 + α^42・X + α^200
-------------------------------
α^221・X + α^55
※10/12 修正
途中のα同士の計算を省略してしまっていますが結果は次のようになります。、
商:α^219・X + α^24
余り:α^221・X + α^55
※10/12 修正(余り)
掛け算も割り算もα表現で計算したり、バイナリに戻したりと面倒くさいです。ハードウェアでやろうとする場合は 8 bit x 8 bit の乗算器と 8 桁の XOR が必要ですし、ソフトウェアでやろうとする場合は「バイナリ→α」「α→バイナリ」のテーブルが必要になります。
ただ割り算に関して云えば、誤り訂正技術に限ると商は必要なく余りだけが欲しいので簡単なハードウェアで実現できます。
これらについては後の機会に説明したいと思います。
四則演算が出来るようになったので、多項式同士の掛け算、割り算をやってみます。
といっても特別なことがあるわけではありません。いわゆる普通の多項式演算です。違うのは加減算は XOR で行うこと、乗除算はαを使って計算することです。
まず掛け算から、
{(3Ch)X^3 + (15h)X^2 + (74h)X + (BCh)} * {(1Fh)X^2 + (2Dh)X + (E3h)}
まず項同士の掛け算になりますから、α表現に直します。前回の表を使います。
(α^77・X^3 + α^141・X^2 + α^10・X + α^71) * (α^113・X^2 + α^18・X + α^176)
手計算でやるような表現に直して、
α^77・X^3 + α^141・X^2 + α^10・X + α^71
x α^113・X^2 + α^18・X + α^176
--------------------------------------------------------------------
α^(77+176)・X^3 + α^(141+176)・X^2 + α^(10+176)・X + α^(71+176) ← α^254 を越えたら 255 を引きます。
α^253・X^3 + α^62・X^2 + α^186・X + α^247 :再掲、以下同様に、
α^95・X^4 + α^159・X^3 + α^28・X^2 + α^89・X
+ α^190・X^5 + α^254・X^4 + α^123・X^3 + α^184・X^2
--------------------------------------------------------------------------------
α^190・X^5 + (α^95 + α^254)・X^4 + (α^253 + α^159 + α^123)・X^3 + (α^62 + α^28 + α^184)・X^2 +(α^186 + α^89)・X + α^247
で、α^m とα^n の足し算はどうやるの?となるのですが、前回説明したように一旦バイナリ表現に戻さないといけません。
α^190 → AEh → 1010 1110
α^95 → E2h → 1110 0010
α^254 → 8Eh → 1000 1110
α^253 → 47h → 0100 0111
α^159 → 73h → 0111 0011
α^123 → C5h → 1100 0101
α^62 → DEh → 1101 1110
α^28 → 18h → 0001 1000
α^184 → 95h → 1001 0101
α^186 → 6Eh → 0110 1110
α^89 → E1h → 1110 0001
α^247 → 83h → 1000 0011
α^95 + α^254 = (1110 0010) xor (1000 1110) = 0110 1100 = 6Ch
α^253 + α^159 + α^123 = (0100 0111) xor (0111 0011) xor (1100 0101) = 1111 0001 = F1h
α^62 + α^28 + α^184 = (1101 1110) xor (0001 1000) xor (1001 0101) = 0101 0011 = 53h
α^186 + α^89 = (0110 1110) xor (1110 0001) = 1100 1111 = CFh
ということで、
(AEh)・X^5 + (6Ch)・X^4 + (F1h)・X^3 + (53h)・X^2 + (CFh)・X + 83h
となります。
同じ多項式同士で割り算もやってみます。
{(3Ch)X^3 + (15h)X^2 + (74h)X + (BCh)} / {(1Fh)X^2 + (2Dh)X + (E3h)}
(α^77・X^3 + α^141・X^2 + α^10・X + α^71) / (α^113・X^2 + α^18・X + α^176)
α^219・X + α^24
--------------------------------------------
α^113・X^2 + α^18・X + α^176 | α^77・X^3 + α^141・X^2 + α^10・X + α^71
α^77・X^3 + α^237・X^2 + α^140・X
-----------------------------------
α^137・X^2 + α^79・X + α^71
α^137・X^2 + α^42・X + α^200
-------------------------------
α^221・X + α^55
※10/12 修正
途中のα同士の計算を省略してしまっていますが結果は次のようになります。、
商:α^219・X + α^24
余り:α^221・X + α^55
※10/12 修正(余り)
掛け算も割り算もα表現で計算したり、バイナリに戻したりと面倒くさいです。ハードウェアでやろうとする場合は 8 bit x 8 bit の乗算器と 8 桁の XOR が必要ですし、ソフトウェアでやろうとする場合は「バイナリ→α」「α→バイナリ」のテーブルが必要になります。
ただ割り算に関して云えば、誤り訂正技術に限ると商は必要なく余りだけが欲しいので簡単なハードウェアで実現できます。
これらについては後の機会に説明したいと思います。