해밍 부호(Hamming Code)란?
1비트 오류를 정정할 수 있는 오류 정정 부호의 대표. r개의 검사 비트를 사용하여, 길이 2^r − 1비트의 부호어 중 2^r − 1 − r비트를 데이터에 사용한다. r = 3인 해밍 부호(7, 4)에서는 4비트 데이터에 3비트 검사 비트를 붙인다. 각 검사 비트는 서로 겹치는 비트 조합의 패리티이며, 수신 측에서 검사를 다시 한 결과(신드롬)가 잘못된 비트의 위치를 2진수로 나타낸다. 최소 해밍 거리는 3이며, 전체 패리티를 1비트 더한 SECDED에서는 2비트 오류의 검출도 할 수 있다. 서버용 메모리의 ECC 등에 쓰인다.
일본어 명칭: ハミング符号
해밍 부호(Hamming Code)은(는) 정보 이론과 부호의 기초, 논리 회로 등 2개 분야의 연습 문제 5개에 나와요.
분야: 정보 이론과 부호의 기초
(7, 4) 부호의 구조
비트 위치를 1~7로 하고, 2의 거듭제곱 위치 1, 2, 4를 검사 비트로 합니다. 검사 1은 위치 번호를 2진수로 나타냈을 때 1의 자리가 1이 되는 위치(1, 3, 5, 7), 검사 2는 2의 자리가 1이 되는 위치(2, 3, 6, 7), 검사 4는 4의 자리가 1이 되는 위치(4, 5, 6, 7)의 1의 개수를 짝수로 합니다. 잘못된 위치 번호를 2진수로 나타냈을 때 1이 되는 자리에 해당하는 검사만 맞지 않게 되므로, 맞지 않는 검사의 가중치를 더하면 잘못된 위치를 알 수 있습니다.
부호화율과 길이
검사 비트가 r개라면 부호어는 2^r − 1비트이며, (7, 4), (15, 11), (31, 26)처럼 길게 할수록 부호화율은 4/7 ≈ 0.57, 11/15 ≈ 0.73, 26/31 ≈ 0.84로 높아집니다. 그 대신 하나의 부호어로 정정할 수 있는 것은 1비트뿐이므로, 긴 부호어일수록 2비트 이상의 오류가 들어갈 확률이 높아집니다.