私の経験では、手で計算する場合、特にゼロが多い場合は、多項式に変換する方が簡単です。
1010 = 1*x^3 + 0*x^2 + 1*x^1 + 0*x^0 = x^3 + x = x3 + x
101101000 = x8 + x6 + x5 + x3
-------------------
x3 + x ) x8 + x6 + x5 + x3
次に、被除数の最大項( ) を除数の最初の項( ) で除算すると、 が得られます。その数値を上に置き、除数の各項を掛けます。これにより、最初の反復で次の結果が得られます。x^8
x^3
x^5
x5
-------------------
x3 + x ) x8 + x6 + x5 + x3
x8 + x6
各項に対して XOR を実行すると、新しい被除数が得られます: x5 + x3
:
x5
-------------------
x3 + x ) x8 + x6 + x5 + x3
x8 + x6
-------------------
x5 + x3
被除数の最大項が除数の最大項よりも小さくなるまで、同じパターンに従います。計算が完了すると、次のようになります。
x5 + x2
-------------------
x3 + x ) x8 + x6 + x5 + x3
x8 + x6
-------------------
x5 + x3
x5 + x3
-------------------
0
この場合のリマインダーは 0 です。これは、送信中にエラーが発生しなかった可能性が高いことを示します。
注: SO は数式の書式設定をサポートしていないため、上記の例のように短くx^y
して、回答の混乱を減らしました。xy
注 2: 除数の倍数を被除数に加算/減算すると、リマインダが 0 であるため(P(x) + a*C(x)) / C(x) = P(x)/C(x) + a*C(x)/C(x)
と同じリマインダが得られるP(x)/C(x)
ため、リマインダa*C(x)/C(x)
も 0 になります。