해밍 거리(Hamming distance)는 길이가 같은 두 비트열에서 값이 서로 다른 자리의 수다. 예를 들어 10110과 11100은 둘째와 넷째 자리가 달라 해밍 거리가 2다. 오류로 비트 개가 뒤집히면 받은 비트열과 원래 비트열의 해밍 거리는 다.[1] Microchip 앱노트 AN2632에 따르면 해밍 거리는 두 값을 XOR한 결과에 있는 1의 개수로 나타낼 수 있다.[2]

최소 해밍 거리와 검출·정정 능력

TI 앱노트 SPRA530에 따르면 부호의 최소 해밍 거리 은 서로 다른 두 부호어 사이의 해밍 거리 가운데 가장 작은 값이다. 블록 부호는 오류를 개까지 찾아내고, 오류 개수 가 을 만족하면 고친다. 예를 들어 부호어가 00000과 11111뿐인 부호는 라 오류 비트 4개까지 찾아내고 2개까지 고친다.[3]

최소 해밍 거리가 같은 부호에서는 정정 능력의 일부를 검출 능력으로 바꿔 쓸 수 있다. 위 예처럼 인 부호는 오류 2개 정정, 오류 1개 정정과 3개 검출, 오류 4개 검출 가운데 하나로 쓸 수 있다.[4]

최소 해밍 거리가 4인 SECDED(Single Error Correction, Double Error Detection) 부호는 비트 하나의 오류를 고치면서 비트 두 개의 오류를 찾아낸다.[5][6] SECDED는 ECC에서 다룬다. TI Hercules MCU의 플래시 ECC는 SECDED라서 비트 하나의 오류를 가장 가까운 유효한 값으로 되돌려 고치지만, 3비트 오류는 잘못 고칠 수 있다. 이 ECC는 3비트 오류 검출이 더 중요하면 오류 검출 전용 모드로 둘 수 있다.[5]

CRC의 해밍 거리는 생성 다항식이 같아도 CRC를 뺀 데이터 워드의 길이에 따라 달라서, 데이터 워드가 길수록 작아진다.[7] CAN이 쓰는 CRC의 해밍 거리는 CAN CRC에서 다룬다.

[1]
IEC, “IEC 60050-721 International Electrotechnical Vocabulary — 721-08-25 Hamming distance.” 1991. Accessed: Sep. 29, 2026. [Online]. Available: https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=721-08-25
[2]
“AN2632: Guide to IEC 60730 Class B Compliance with tinyAVR 1-series,” Microchip Technology Inc., 2019. Accessed: Sep. 29, 2026. [Online]. Available: https://ww1.microchip.com/downloads/en/Appnotes/IEC60730-ClassB-Compliance-with-tinyAVR1-DS00002632C.pdf
[3]
“Cyclic Redundancy Check Computation: An Implementation Using the TMS320C54x,” Texas Instruments, 1999. Accessed: Sep. 29, 2026. [Online]. Available: https://www.ti.com/lit/an/spra530/spra530.pdf
[4]
R. W. Hamming, “Error Detecting and Error Correcting Codes,” Bell System Technical Journal, vol. 29, no. 2, pp. 147–160, 1950, Accessed: Sep. 30, 2026. [Online]. Available: https://web.archive.org/web/20101215004122/http://bstj.bell-labs.com/BSTJ/images/Vol29/bstj29-2-147.pdf
[5]
“Use of All 1’s and All 0’s Valid in Flash EEPROM Emulation,” Texas Instruments, 2011. Accessed: Sep. 29, 2026. [Online]. Available: https://www.ti.com/lit/an/spna139/spna139.pdf
[6]
“CoreEDAC User Guide,” Microchip Technology Inc., 2025. Accessed: Sep. 29, 2026. [Online]. Available: https://ww1.microchip.com/downloads/aemDocuments/documents/FPGA/ProductDocuments/UserGuides/ip_cores/directcores/CoreEDAC_HB.pdf
[7]
P. Koopman, “32-Bit Cyclic Redundancy Codes for Internet Applications,” in Proceedings of the International Conference on Dependable Systems and Networks (DSN 2002), 2002. Accessed: Sep. 30, 2026. [Online]. Available: https://users.ece.cmu.edu/~koopman/networks/dsn02/dsn02_koopman.pdf