Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму CRC32, CRC16, CRC8

Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ сущСствуСт большоС количСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² расчёта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC. Но Ρ‡Ρ‚ΠΎ ΠΆΠ΅ собствСнно Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½Π° рассчитываСтся ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ? Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся. А Π·Π°ΠΎΠ΄Π½ΠΎ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ CRC с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

1 ВСория, лСТащая Π² основС расчёта CRC

Но Ρ‚Π°ΠΊΠΎΠΉ способ опрСдСлСния наличия ошибок – ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΈ срабатываСт Π½Π΅ всСгда, Ρ‚.ΠΊ. ΠΏΡ€ΠΈ искаТСнии Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±ΠΈΡ‚ΠΎΠ² сообщСния, Ρ‡Ρ‘Ρ‚Π½ΠΎΡΡ‚ΡŒ суммы ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сущСствуСт мноТСство Π±ΠΎΠ»Π΅Π΅ Β«ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ…Β» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, Π² Ρ‚ΠΎΠΌ числС CRC.

По сути, CRC – это Π½Π΅ сумма, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСлСния Π½Π΅ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ сообщСния) Π½Π° константу, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ – остаток ΠΎΡ‚ дСлСния сообщСния Π½Π° константу. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, CRC историчСски Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма». Π’ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CRC вносит Π²ΠΊΠ»Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ сообщСния. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚ исходного сообщСния измСнится ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма Ρ‚ΠΎΠΆΠ΅ измСнится, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ сущСствСнно. Π­Ρ‚ΠΎ большой плюс Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, исказилось исходноС сообщСниС ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ исходноС сообщСниС – понятно. Π­Ρ‚ΠΎ нСпрСрывная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.

Π§Ρ‚ΠΎ Π·Π° константа, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»ΠΈΡ‚ΡŒ исходноС сообщСниС? Π­Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ число Ρ‚Π°ΠΊΠΆΠ΅ любой Π΄Π»ΠΈΠ½Ρ‹, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ числа, ΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ 1 Π±Π°ΠΉΡ‚Ρƒ – 8, 16 ΠΈΠ»ΠΈ 32 Π±ΠΈΡ‚Π°. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‚Π°ΠΊ Π»Π΅Π³Ρ‡Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, вСдь ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ с Π±Π°ΠΉΡ‚Π°ΠΌΠΈ, Π° Π½Π΅ с Π±ΠΈΡ‚Π°ΠΌΠΈ.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ записи ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π° ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд подразумСваСтся, Π½ΠΎ Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС ΠΊΠ°ΠΊ (1)00000111. Π’ скобках я ΡƒΠΊΠ°Π·Π°Π» ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌΡ‹ΠΉ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд числа. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ говорят, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ Ρ€Π°Π²Π΅Π½ 7 Π² дСсятичной систСмС счислСния (111b = 7d).

Π’ΠΎΡ‚ Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: (x 16 +) x 15 + x 2 + x 0 = (1)1000000000000101 = 0x8005 = 32773.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΈΠ΅ стандартныС ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Ρ‹ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² CRC. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

Алгоритм CRCΠžΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½
CRC-160x8005
CRC-16-CCITT0x1021
CRC-16-DNP0x3D65
CRC-32-IEEE 802.30x04C11DB7
CRC-32C0x1EDC6F41
CRC-32K0x741B8CD7

Π’ посвящённой расчёту CRC ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π° Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ Π΅ΡΡ‚ΡŒ большая Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠ².

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму? БущСствуСт Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ – Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сообщСния Π½Π° ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ Β«Π² Π»ΠΎΠ±Β» – ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² цСлях ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства вычислСний ΠΈ, соотвСтствСнно, ускорСния расчёта CRC. Для Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ рассмотрим ΠΈΠΌΠ΅Π½Π½ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ числа Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ выполняСтся ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ. Алгоритм вычислСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC:

Назовём этот ΠΌΠ΅Ρ‚ΠΎΠ΄ расчёта CRC ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сдвига ΠΈΠ»ΠΈ простой ΠΌΠ΅Ρ‚ΠΎΠ΄.

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚ Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС вычислСния CRC Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСлСния Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ x 8 + x 2 + x 1 + x 0

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ расчёта CRC ΠΎΡ‡Π΅Π½ΡŒ просто. Π’ ΠΏΡƒΠ½ΠΊΡ‚Π΅ (2) описанного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ вмСсто дополнСния исходного сообщСния нулями Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π±ΠΈΡ‚Π°ΠΌΠΈ рассчитанной ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ остаток ΠΎΡ‚ дСлСния Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ сообщСния Π½Π° ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π²Π½ΡΡ‚ΡŒΡΡ Π½ΡƒΠ»ΡŽ – это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π²Π΅Ρ€Π½ΠΎ рассчитанной ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы. ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ нуля остаток ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠ± ошибкС.

ΠžΡΡ‚Π°Π»Π°ΡΡŒ Π΅Ρ‰Ρ‘ ΠΏΠ°Ρ€Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стоит ΡΠΊΠ°Π·Π°Ρ‚ΡŒ. Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, сообщСниС ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° любоС число. Как Π΅Π³ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ? БущСствуСт ряд стандартных ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ вычислСнии CRC. НапримСр, для CRC32 это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ число 0x04C11DB7, Π° для CRC16 это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 0x8005.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² рСгистр Π² Π½Π°Ρ‡Π°Π»Π΅ вычислСний ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠ»ΠΈ, Π° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ число. (И это рСкомСндуСтся Π΄Π΅Π»Π°Ρ‚ΡŒ: Ρ‚Π°ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния Π½Π°Ρ‡Π°Π»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСния, Ссли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сообщСниС ΠΈΠΌΠ΅Π΅Ρ‚ Π² Π½Π°Ρ‡Π°Π»Π΅ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹).

Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ расчётах нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π΄Π°Ρ‡Π΅ΠΉ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму CRC ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ число.

И послСднСС. Π‘Π°ΠΉΡ‚Ρ‹ сообщСния ΠΏΡ€ΠΈ записи Π² рСгистр ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ Π±ΠΈΡ‚ΠΎΠΌ Β«Π²ΠΏΠ΅Ρ€Ρ‘Π΄Β», Ρ‚Π°ΠΊ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, младшим. И Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ CRC Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒΡΡ, начиная со ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ Π±ΠΈΡ‚Π° ΠΈΠ»ΠΈ с младшСго.

ИзмСнСниС порядка Π±ΠΈΡ‚ΠΎΠ² Π² Π±Π°ΠΉΡ‚Π΅ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ Β«ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅Β», «рСвСрс» ΠΈΠ»ΠΈ Β«ΠΎΡ‚Π·Π΅Ρ€ΠΊΠ°Π»ΠΈΠ²Π°Π½ΠΈΠ΅Β» Π±Π°ΠΉΡ‚Π°.

Π˜Ρ‚ΠΎΠ³ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ 6 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы:

2 Расчёт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сдвига

Код расчёта CRC ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сдвига Π½Π° языкС VB.NET

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠ°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ»ΠΎΡ…ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΈ вычислСнии ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… сообщСний, Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… дСсятков ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ². Π― писал Π΅Ρ‘ с Ρ†Π΅Π»ΡŒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ простого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΈ Π½Π΅ занимался ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΡ€ΠΈ расчётС CRC для Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ сообщСния, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ дСсятки ΠΈΠ»ΠΈ сотни ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ΠΎΠ², ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ сильно Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ процСссор ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚.ΠΊ. всё сообщСниС Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ загруТаСтся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Π­Ρ‚ΠΎΠΌΡƒ способствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ прСобразования числа Π² Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Queue(Of Boolean). Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ большими сообщСниями ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ сообщСниС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСбольшими порциями.

Π—Π°Ρ‚ΠΎ Ρƒ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ прСимущСство: ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для расчёта CRC любого порядка, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ 8, 16 ΠΈΠ»ΠΈ 32. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ CRC5 ΠΈΠ»ΠΈ CRC49. Волько для чисСл большС 32-Ρ… разрядов Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ – допустим, poly ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ ΠΊΠ°ΠΊ UInteger, Π° ΠΊΠ°ΠΊ ULong, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ массива (Ρ‚ΠΎΠ³Π΄Π° тСорСтичСски порядок CRC Π²ΠΎΠΎΠ±Ρ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½).

3 Расчёт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

Для сокращСния числа вычислСний ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° – ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сдвига – ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’ частности, ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ Π½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±ΠΈΡ‚Ρƒ Π·Π° Ρ€Π°Π·, Π° сразу ΠΏΠΎ нСсколько. ΠΠ°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ снискали Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сообщСниС сдвигаСтся Π½Π° число Π±ΠΈΡ‚ΠΎΠ², ΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ числу Π±ΠΈΡ‚ΠΎΠ² Π² Π±Π°ΠΉΡ‚Π΅: 8, 16 ΠΈΠ»ΠΈ 32, Ρ‚.ΠΊ. с Π±Π°ΠΉΡ‚Π°ΠΌΠΈ Π»Π΅Π³Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ (Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСобразования). ΠŸΡ€ΠΈ этом идСя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Ρ‚Π° ΠΆΠ΅: сдвиг ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜ с содСрТимым рСгистра.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, оказываСтся, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ расчётов ΠΌΠΎΠΆΠ½ΠΎ провСсти Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² массив – Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒΡΡ Π½ΡƒΠΆΠ½ΠΎΠ΅ число. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ расчёта Π½Π°Π·Π²Π°Π»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ расчёта CRC.

Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ здСсь Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΎΡ€ΠΈΡŽ, ΠΎΠ½Π° довольно слоТна ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· описана Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…. Π’ частности, ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ, Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ Π² основС расчёта CRC, ΠΈ описаниС Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, даётся Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ross N. Williams: «A Painless Guide to CRC Error Detection Algorithms». Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ! ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ тСкст – Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π° русский ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅.

Ну Ρ‡Ρ‚ΠΎ ΠΆΠ΅, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя для самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Она Π±ΡƒΠ΄Π΅Ρ‚ нСсколько Π΄Π»ΠΈΠ½Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ. По сути, это рСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² стилС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΠΌΠΎΡ‘ΠΌ любимом языкС программирования VB.NET. Π― Π½Π°Π·Π²Π°Π» этот класс RocksoftCrcModel, ΠΏΠΎ названию ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π°Π²Ρ‚ΠΎΡ€ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Код расчёта CRC Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π½Π° языкС VB.NET

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ€Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Ρ‚Π°ΠΊ:

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° CRC16. Π’ качСствС сообщСния message Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив Π±Π°ΠΉΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой строку «123456789» Π² ΠΊΠΎΠ΄Π΅ ASCII, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°Ρ… CRC:

Данная рСализация расчёта CRC Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π° мною ΠΏΡƒΡ‚Ρ‘ΠΌ сличСния со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°ΠΌΠΈ CRC (Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ это «слабой» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½ΠΎ Π² Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° осущСствляСтся Π½Π° основании сравнСния рассчитанной ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы с эталонной, ΠΏΡ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… исходных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΈ сообщСнии).

Для Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ C# ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ класс Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Код расчёта CRC Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π½Π° языкС C# (разворачиваСтся)

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C# Π½Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΌΠ½ΠΎΠΉ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ, написанной Π½Π° VB.NET. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. Если Π² Π½Ρ‘ΠΌ обнаруТатся ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ошибки, Ρ‚ΠΎ ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях ΠΈΠ»ΠΈ ΠΌΠ½Π΅ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ, ΠΈΡΠΏΡ€Π°Π²Π»ΡŽ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽ ΠΊ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ использованию Ρ„Π°ΠΉΠ» RocksoftCrcModel.vb с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ расчёта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ‚ΡƒΡ‚ рассмотрСли, Π° Ρ‚Π°ΠΊΠΆΠ΅ RocksoftCrcModel.cs Π½Π° C#.

ΠŸΠΎΠ»Π½ΡƒΡŽ ΠΈ ΡΠ°ΠΌΡƒΡŽ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с рСпозитория Π½Π° GitHub.

4 Β«Π’Π·Π»ΠΎΠΌΒ» ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC32 ΠΈ CRC16

ΠšΡ€Π°Ρ‚ΠΊΠΎ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅ΠΌ вопрос Β«Π²Π·Π»ΠΎΠΌΠ°Β» CRC32. И ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π΄Π°Π²Π°ΠΉΡ‚Π΅ опрСдСлимся с понятиСм Β«Π²Π·Π»ΠΎΠΌΒ» ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ вопросу.

Если Π·Π°Π΄Π°Ρ‡Π° опрСдСлСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ массива Π΄Π°Π½Π½Ρ‹Ρ… – прямая Π·Π°Π΄Π°Ρ‡Π°, Ρ‚ΠΎ Β«Π²Π·Π»ΠΎΠΌΒ» – это обратная Π·Π°Π΄Π°Ρ‡Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΏΠΎΠ΄Π³ΠΎΠ½ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ массив Π΄Π°Π½Π½Ρ‹Ρ….

Допустим, Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ рассчитали Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Π½Ρ‘ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число Π±Π°ΠΉΡ‚ΠΎΠ², сохранив ΠΏΡ€ΠΈ этом ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это совсСм Π½Π΅ слоТно.

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму CRC32, CRC16 ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ, какая Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π°, для этого ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. ΠŸΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ C1. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ число Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТится Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммС (для CRC32 – 4 Π±Π°ΠΉΡ‚Π°, для CRC16 – 2 Π±Π°ΠΉΡ‚Π°, ΠΈ Ρ‚.Π΄.). МоТно простым ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ число C2, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΈ запишСм Π² эти Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹. Π’Π΅Π΄ΡŒ понятно, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ всСх допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ CRC32 укладываСтся Π² 2 32

4,295 ΠΌΠ»Ρ€Π΄. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π·Π° 4 с нСбольшим ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ расчёта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ содСрТимым рСгистра, Ρ€Π°Π²Π½Ρ‹ΠΌ Π‘1, ΠΌΡ‹ брутфорсом (Β«Π² Π»ΠΎΠ±Β», ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π³Ρ€ΡƒΠ±ΠΎΠΉ силы) ΠΏΠΎΠ΄Π±Π΅Ρ€Ρ‘ΠΌ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ соврСмСнных Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… мощностях это Π½Π΅ составит ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. А ΡƒΠΆ Β«Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒΒ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° CRC16 Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΄Π΅Π»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСкунд.

МоТно Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ Π² сСрСдинС ΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°? МоТно. К ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ XOR ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°ΠΊΠΎΠ½: a XOR (b XOR c) = (a XOR b) XOR c, поэтому ΠΌΠΎΠΆΠ½ΠΎ с успСхом Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π½Π° 3 части: Π΄ΠΎ вставки, послС вставки, ΠΈ сама вставка. ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ CRC для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… частСй (C1 ΠΈ C2 Π½Π° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ), ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ XOR, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этим числом Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ содСрТимоС рСгистра, Π° Π·Π°Ρ‚Π΅ΠΌ Β«ΡΠ±Ρ€ΡƒΡ‚Ρ„ΠΎΡ€ΡΠΈΡ‚ΡŒΒ» CRC ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ части X.

Π•ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ изящный способ ΠΏΠΎΠ΄ΠΎΠ³Π½Π°Ρ‚ΡŒ CRC ΠΏΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вмСсто ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх подряд Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΡ‹ Β«ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌ Π½Π°Π·Π°Π΄Β» нСсколько Ρ€Π°Π· (ΠΏΠΎ числу Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈΠ»ΠΈ Π±ΠΈΡ‚ΠΎΠ² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы) наш Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сдвига Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° CRC Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ. На эту Ρ‚Π΅ΠΌΡƒ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΈ качСствСнныС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ Π² сСти.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π²Ρ‹Π²ΠΎΠ΄: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма Ρ‚ΠΈΠΏΠ° CRC Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ случайных искаТСниях ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΊΠ°Π½Π°Π»Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π·Π»ΠΎΠΌΠ°.

5 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для расчёта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ CRC32, CRC16 ΠΈ CRC8

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для расчёта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ CRC32, CRC16 ΠΈ CRC8

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° позволяСт Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ CRC массива Π±Π°ΠΉΡ‚ΠΎΠ² (Π²Π²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΠΎΠ»Π΅ Β«Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Β») ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. ВсС рассмотрСнныС Π²Ρ‹ΡˆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· интСрфСйс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Ну ΠΈ напослСдок Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽ ссылки Π½Π° Π°Ρ€Ρ…ΠΈΠ², Π² Π°Ρ€Ρ…ΠΈΠ²Π΅ Π»Π΅ΠΆΠ°Ρ‚: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ CRCΒ», ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ «A Painless Guide to CRC Error Detection Algorithms», класс RocksoftCrcModel() Π½Π° Visual Basic.NET ΠΈ Π½Π° C#.

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚ Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π° «CRC calculator»

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΄Π²Π΅Π΄Ρ‘ΠΌ ΠΈΡ‚ΠΎΠ³ΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹:
– ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма CRC ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‘ Π²ΠΈΠ΄Ρ‹;
– Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ CRC ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сдвига ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ;
– ΡƒΠ·Π½Π°Π»ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Β«Π²Π·Π»ΠΎΠΌΠ°Β» CRC ΠΈ сдСлали Π²Ρ‹Π²ΠΎΠ΄ ΠΎΠ± области примСнимости ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы Ρ‚ΠΈΠΏΠ° CRC.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ расчСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ линиям связи, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма, рассчитанная ΠΏΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ. Алгоритм часто слоТный, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ½ обоснован матСматичСски, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΆ Π½Π΅ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΈ Π΄Π΅Ρ„ΠΈΡ†ΠΈΡ‚Π΅ рСсурсов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ².

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства, Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Β«Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈΒ», Ρ‡Ρ‚ΠΎ интСрСсная Ρ‚Π΅ΠΌΠ° сама ΠΏΠΎ сСбС.

Π‘Π΅Π· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ опасно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠ΅Ρ…ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Π΅Π·Π΄Π΅ ΠΈ всСгда, вСсь вопрос Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΈΡ… вСроятности возникновСния ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΈΠΌΠΈ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктах. Π’ зависимости ΠΎΡ‚ условий ΠΈ выбираСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ выявлСния ошибок ΠΈ количСство Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммС. Π‘Π»ΠΎΠΆΠ½Π΅Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΈ большС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма, мСньшС Π½Π΅ распознанных ошибок.

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΠΎΠΌΠ΅Ρ… Π½Π° физичСском ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ самого Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, ΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎ, фактичСски, ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΌ стандартом с 1979 Π³ΠΎΠ΄Π°.

НС слабый Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, Π΅ΡΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Π΅Π· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° побитовая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…), Π² любом случаС способный вынСсти ΠΌΠΎΠ·Π³ ΠΊΠ°ΠΊ программисту, Ρ‚Π°ΠΊ ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ. НС Π²ΠΎ всякий ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π²Π»Π΅Π·Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… нСвысокой Ρ†Π΅Π½ΠΎΠΉ.

Π‘ΠΈΡ‚ чСтности (1-битная ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма)

На ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС простой Π±ΠΈΡ‚ чСтности. ΠŸΡ€ΠΈ нСобходимости формируСтся Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ, ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ расписан Π² Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ. НСдостаток Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½, пропускаСт Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ошибки (ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число ошибок), ΠΊΠΎΠ³Π΄Π° Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ всСх Π±ΠΈΡ‚ Π½Π΅ мСняСтся. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сбора статистики ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ошибок Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, хотя ΠΈ сниТаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ ошибки Π½Π° 50% (зависит, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠΌΠ΅Ρ… Π½Π° Π»ΠΈΠ½ΠΈΠΈ, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС подразумСваСтся Ρ‡Ρ‚ΠΎ число Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… сбоСв равновСроятно).
Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΈΡ‚Π° чСтности, часто ΠΈ ΠΊΠΎΠ΄ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ UART Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΡ‚ чСтности. Π’ΠΈΠΏΠΈΡ‡Π½ΠΎ, просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ:

Часто Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°ΠΆΠ΅, Ρ‡Ρ‚ΠΎ UART ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π° Π±ΠΎΡ€Ρ‚Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±ΠΈΡ‚Π° чСтности. ΠšΡ€ΠΎΠΌΠ΅ цСлостности ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, это позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ устойчивого срыва синхронизации (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Ρ€Π°Π΄ΠΈΠΎΠΊΠ°Π½Π°Π»Ρƒ), ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³Ρƒ случайно ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ старт ΠΈ стоп Π±ΠΈΡ‚Ρ‹, Π° вмСсто Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π±ΡƒΡ„Π΅Ρ€Π° старт ΠΈ стоп Π±ΠΈΡ‚Ρ‹ Π² случайном порядкС.

8-битная ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма

Если контроля чСтности ΠΌΠ°Π»ΠΎ (Π° этого ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ°Π»ΠΎ), добавляСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма. Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму, ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ сумму Ρ€Π°Π½Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚, просто ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚

ЕстСствСнно Π±ΠΈΡ‚Ρ‹ пСрСполнСния Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму 8 Π±ΠΈΡ‚. МоТно ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΏΡ€ΠΈ случайном сбоС ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ увСличится Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π°ΠΉΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ Π½Π° Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма Π½Π΅ измСнится. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ экспСримСнт ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠ΅:

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚.

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚,

Π½Π° 256 ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠΌ с ошибкой, ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ статистику ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой тСстовой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Или условный ΠšΠŸΠ”=55%, ΠΎΡ‚ возмоТностСй «идСальной» ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы. Π’Π°ΠΊΠΎΠ²Π° ΠΏΠ»Π°Ρ‚Π° Π·Π° простоту Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ†Π΅Π»ΠΎΠΌ, для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ работоспособСн. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½Π° опСрация слоТСния ΠΈ ΠΎΠ΄Π½Π° пСрСмСнная 8-битовая. НСт возмоТности Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ примСняСтся Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… ADAMS, ICP, Π² составС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° DCON (Ρ‚Π°ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π±ΠΈΡ‚ чСтности, символы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ASCI, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ способствуСт ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ надСТности ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ итоговая Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ нСсколько Π²Ρ‹ΡˆΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ошибок выявляСтся ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌ, Π½Π΅ связанных с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммой).

НС смотря Π½Π° Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ прохоТдСния ошибки 1:143, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ обнаруТСния ошибки Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ 1:256 Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° тСорСтичСски. ΠŸΠΎΡ‚Π΅Ρ€ΠΈ Π² качСствС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΅ΡΡ‚ΡŒ, Π½ΠΎ Π½Π΅ всСгда это сущСствСнно. Если Π½ΡƒΠΆΠ½Π° Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму с большим числом Π±ΠΈΡ‚. Или, ΠΈΠ½Π°Ρ‡Π΅ говоря, простая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма, нСдостаточно эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 0.75 Π±ΠΈΡ‚Π° ΠΈΠ· 8 ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π±ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммС.

Для сравнСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ, вмСсто суммы, ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ слоТСниС XOR. Π‘Ρ‚Π°Π»ΠΎ сущСствСнно Ρ…ΡƒΠΆΠ΅, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ обнаруТСния ошибки 1:67 ΠΈΠ»ΠΈ 26% ΠΎΡ‚ тСорСтичСского ΠΏΡ€Π΅Π΄Π΅Π»Π°. Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎ, это ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ XOR мСняСт ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибкС Π΅Ρ‰Π΅ мСньшС Π±ΠΈΡ‚ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммС, Π½ΠΈΠΆΠ΅ ΠΎΡ‚ΠΊΠ»ΠΈΠΊ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сбой, ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ошибкС Π±ΠΎΠ»Π΅Π΅ вСроятно Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму Π² исходноС состояниС.

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма ΠΏΠΎ XOR прСдставляСт ΠΈΠ· сСбя 8 нСзависимых ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм ΠΈΠ· 1 Π±ΠΈΡ‚Π°. Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ошибка придСтся Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· 8 Π±ΠΈΡ‚ Ρ€Π°Π²Π½Π° 1:8, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ сбоя 1:64, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ наблюдаСм, тСорСтичСская Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° совпала с ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Нам ΠΆΠ΅ Π½ΡƒΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ замСнял ΠΏΡ€ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ ошибкС максимальноС количСство Π±ΠΈΡ‚ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммС. Но ΠΌΡ‹, Π² ΠΎΠ±Ρ‰Π΅ΠΉ слоТности, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΈ рСсурсами Π² нашСм распоряТСнии. НС Π²ΠΎ всСх ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… Π΅ΡΡ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ расчСта CRC. Но, практичСски Π²Π΅Π·Π΄Π΅, Π΅ΡΡ‚ΡŒ Π±Π»ΠΎΠΊ умноТСния. РассчитаСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚, Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Β«ΠΌΠ°Π³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽΒ» константу:

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ простой, ΠΈ Π±Ρ‹Ρ‚ΡŒ достаточно большой, для измСнСния большСго числа Π±ΠΈΡ‚ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, 211 Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, провСряСм:

ВсСго 72% ΠΎΡ‚ тСорСтичСского ΠΏΡ€Π΅Π΄Π΅Π»Π°, нСбольшоС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ простой суммой. Алгоритм Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС тСряСтся ваТная информация ΠΈΠ· отбрасываСмых ΡΡ‚Π°Ρ€ΡˆΠΈΡ… 8..16 Π±ΠΈΡ‚, Π° ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΡ‰Π΅ всСго, ΡΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ XOR с младшими Π±ΠΈΡ‚Π°ΠΌΠΈ 1..8. ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ интСнсивной ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ рСсурсов. ДобавляСм фокус ΠΈΠ· криптографичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 91% ΠΎΡ‚ тСорСтичСского ΠΏΡ€Π΅Π΄Π΅Π»Π°. Π’ΠΏΠΎΠ»Π½Π΅ годится для примСнСния.

Если Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π½Π΅Ρ‚ Π±Π»ΠΎΠΊΠ° умноТСния, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ слоТСния, смСщСния ΠΈ XOR. Π‘ΡƒΡ‚ΡŒ процСсса такая ΠΆΠ΅, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ошибкой Π±ΠΈΡ‚, Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ «распрСдСляСтся» ΠΏΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π±ΠΈΡ‚Π°ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы.

На ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 254,5 ΠΈΠ»ΠΈ 99% ΠΎΡ‚ тСорСтичСского ΠΏΡ€Π΅Π΄Π΅Π»Π°, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС, Π½ΠΎ всС ΠΎΠ½ΠΈ простыС ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Если для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ хранСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы ΠΎΡ‚Π΄Π°Ρ‚ΡŒ 16 Π±ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ связи Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ младшиС 8 Π±ΠΈΡ‚), Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π°ΠΆΠ΅ для самого слабого ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π’ Ρ†Π΅Π»ΠΎΠΌ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ 8 Π±ΠΈΡ‚ Π½Π΅Ρ‚ особого смысла, ΠΈ 8-битовая промСТуточная пСрСмСнная использовалась Ρ€Π°Π½Π΅Π΅ просто для упрощСния понимания Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π§Ρ‚ΠΎ соотвСтствуСт 100.6% ΠΎΡ‚ тСорСтичСского ΠΏΡ€Π΅Π΄Π΅Π»Π°, Π²ΠΏΠΎΠ»Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ простого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ строчки:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ 16-Π±ΠΈΡ‚Π½ΠΎΠ΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅ Π½Π΅ обошлось Π±Π΅Π· магичСского числа 44111 (Π²Ρ‹Π±Ρ€Π°Π½ΠΎ ΠΈΠ· ΠΎΠ±Ρ‰ΠΈΡ… сообраТСний Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСго подмноТСства чисСл). Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ, константу ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ²ΡˆΠΈΡΡŒ с ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ошибок Π² Π»ΠΈΠ½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ‚ΠΎΠ»ΡŒ высокий Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ 2 Ρ†ΠΈΠΊΠ»Π° умноТСния подряд, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ Π±ΠΈΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, являСтся послСдний Π±Π°ΠΉΡ‚ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠΌΡ‹, особСнно Π΅Π³ΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ Π±ΠΈΡ‚Ρ‹, ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму, Π½ΠΎ ΠΈ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ошибка придСтся Π½Π° Π½ΠΈΡ… Π½Π΅Π²Π΅Π»ΠΈΠΊΠ°, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 4%. Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ практичСски Π½ΠΈ ΠΊΠ°ΠΊ Π½Π΅ проявляСтся статистичСски, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π½Π° ΠΌΠΎΠ΅ΠΌ Π½Π°Π±ΠΎΡ€Π΅ тСстовых Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ошибкС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ 10 сбойными Π±ΠΈΡ‚Π°ΠΌΠΈ. Для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ этой особСнности ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ N+1 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°ΠΉΡ‚ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Π² тСстовом Π±Π»ΠΎΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π½ΠΎ это услоТнСниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°).

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Π΅Π· умноТСния с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ CRC 16-битная, Π΄Π°Π½Π½Ρ‹Π΅ 8-Π±ΠΈΡ‚Π½Ρ‹Π΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° β€” младшиС 8 Π±ΠΈΡ‚ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 100.6% ΠΎΡ‚ тСорСтичСского ΠΏΡ€Π΅Π΄Π΅Π»Π°.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Π΅Π· умноТСния Π±ΠΎΠ»Π΅Π΅ простой, оставлСн самый ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, всСго 3 матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 86% ΠΎΡ‚ тСорСтичСского ΠΏΡ€Π΅Π΄Π΅Π»Π°.

Π’ этом случаС ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΡΡ‚Π°Ρ€ΡˆΠΈΡ… Π±ΠΈΡ‚ Π½Π΅Ρ‚, ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΌΠ»Π°Π΄ΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ XOR (Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ миксСр).

НСбольшоС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅:

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚

16-битная ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма

Π”Π°Π»Π΅Π΅, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΌΠ°Π»ΠΎ 8 Π±ΠΈΡ‚ для формирования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы.

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 16 Π±ΠΈΡ‚, ΠΈ тСорСтичСская Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ошибки ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… 1:65536, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅. ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ растСт ΠΏΠΎ экспонСнтС. Но, ΠΊΠ°ΠΊ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт, растСт количСство Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ нашСй Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΊ 8 Π±Π°ΠΉΡ‚Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ добавляСтся 2 Π±Π°ΠΉΡ‚Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы.

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ суммы ΠΈ XOR, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ 16-Π±ΠΈΡ‚Π½ΠΎΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ CRC Π½Π΅ рассматриваСм Π²ΠΎΠΎΠ±Ρ‰Π΅, ΠΎΠ½ΠΈ практичСски Π½Π΅ ΡƒΠ»ΡƒΡ‡Π°ΡŽΡ‚ качСство Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 8-Π±ΠΈΡ‚Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ².

ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ 16 Π±ΠΈΡ‚, Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ магичСскоС число 8 ΠΈ 44111, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ нСобоснованноС ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² Ρ€Π°Π·Ρ‹.

Π§Ρ‚ΠΎ соотвСтствуСт 109% ΠΎΡ‚ тСорСтичСского ΠΏΡ€Π΅Π΄Π΅Π»Π°. ΠŸΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ ошибка ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, Π½ΠΎ это ΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для 10 ΠΌΠ»Π½. ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Π’Π°ΠΊ ΠΆΠ΅ сказываСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ создания, ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚ΠΈΠΏ ошибок. Для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, Π² любом случаС Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ условия ΠΏΠΎΠ΄ ошибки Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для накоплСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π° ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ младшиС 16 Π±ΠΈΡ‚. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях, ΠΏΡ€ΠΈ любой разрядности ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы, Ρ‚Π°ΠΊ нСсколько ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ΡΡ качСство Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

32-битная ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ 32-Π±ΠΈΡ‚Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы. ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΡ‚Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ для Π°Π½Π°Π»ΠΈΠ·Π° статистичСских Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ число ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠΌ ΡƒΠΆΠ΅ сравнимо с 2^32. Алгоритм Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, магичСскиС числа ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² сторону увСличСния

Π—Π° 10 ΠΌΠ»Π½. ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ошибка Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ сбор статистики ΠΎΠ±Ρ€Π΅Π·Π°Π» CRC Π΄ΠΎ 24 Π±ΠΈΡ‚:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΈΠ· 10 ΠΌΠ»Π½. ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ошибка ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° 3 Ρ€Π°Π·Π°

Π’ΠΏΠΎΠ»Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ тСорСтичСскому ΠΏΡ€Π΅Π΄Π΅Π»Ρƒ для 24 Π±ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы (1:16777216). Π’ΡƒΡ‚ Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ функция контроля цСлостности Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСна ΠΏΠΎ всСм Π±ΠΈΡ‚Π°ΠΌ CRC, ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ… отбрасываниС с любой стороны, Ссли Π΅ΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ CRC.

Для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… 32 Π±ΠΈΡ‚, достаточно Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ошибок просто Π½Π΅Ρ‚, Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ врСмя оТидания.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Π΅Π· умноТСния:

Ббоя для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма урСзанная Π΄ΠΎ 24 Π±ΠΈΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, 8 ошибок Π½Π° 100 ΠΌΠ»Π½. ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Π°Ρ пСрСмСнная CRC 64-битная.

64-битная ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма

Ну ΠΈ напослСдок 64-битная ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма, максимальная ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма, которая ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅:

Π”ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ошибки ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° сущСствования всСлСнной, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ Π½Π΅ получится πŸ™‚

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ crc массива Π±Π°ΠΉΡ‚

ΠœΠ΅Ρ‚ΠΎΠ΄ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ для CRC32 ΠΏΠΎΠΊΠ°Π·Π°Π» Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π±ΠΈΡ‚ оставляСм, Π²Ρ‹ΡˆΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ соотвСтствии с тСорСтичСским ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ» Π½Π° ΠΌΠ»Π°Π΄ΡˆΠΈΡ… 20 ΠΈ 24 Π±ΠΈΡ‚Π°Ρ…, этого каТСтся Π²ΠΏΠΎΠ»Π½Π΅ достаточным, для ΠΎΡ†Π΅Π½ΠΊΠΈ качСства Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ для 128-Π±ΠΈΡ‚Π½Ρ‹Ρ… чисСл (ΠΈ Π΅Ρ‰Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ…), Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ 128-Π±ΠΈΡ‚Π½Ρ‹Π΅ магичСскиС константы. Но это ΡƒΠΆΠ΅ явно Π½Π΅ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ числа ΠΈ компилятор Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ умноТСния ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ псСвдослучайной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² процСссС.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊ использованию Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ…, ΠΈΠ»ΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΡƒΠΆΠ΅ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Π½Π΅ смотря Π½Π° простоту Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Мой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ исслСдованию CRC Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±.

Π”Π°Π»Π΅Π΅ интСрСсно Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π΅ псСвдослучайныС числа ΠΏΠΎ стандартному Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ), ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ подходящиС магичСскиС числа ΠΏΠΎΠ΄ ряд Π·Π°Π΄Π°Ρ‡ ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… условий, Π΄ΡƒΠΌΠ°ΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° ΠΏΠΎ качСству Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎ скорости, читаСмости ΠΊΠΎΠ΄Π° (простотС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°), качСству Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ ΠΊΠΎΠ΄Π° для всСх Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², для этого ΠΊΠ°ΠΊ-Ρ€Π°Π· ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ с использованиСм умноТСния 8, 16, 32 Π±ΠΈΡ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π±Π΅Π· умноТСния Π²ΠΎΠΎΠ±Ρ‰Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *