본문 바로가기

Library/Data Communication

해밍 코드(Hamming Code)

해밍코드(Hamming Code)는, 전방 오류 수정 방법을 이용한 실제적인 해결책이다. 해밍코드는 어떤 길이의 데이터 단위에도 적용될 수 있으며, 데이터와 중복 비트의 관계를 이용한다.

예를 들어, 7비트 ASCII 코드를 해밍코드로 만들기 위해서는, 데이터 단위의 끝에 덧붙이거나 원래의 데이터 비트들 사이에 띄엄띄엄 배치할 수 있는 4개의 중복 비트가 필요하다.

11비트  = d d d (r4) d d d (r3) d (r2) (r1)

해밍코드에서, 각 r비트는 다음의 각 데이터 비트를 조합한 것에 대한 짝수 패리티이다.

r1 : 비트 1, 3, 5, 7, 8, 11
r2 : 비트 2, 3, 6, 7, 10, 11
r3 : 비트 4, 5, 6, 7
r4 : 비트 8, 9, 10, 11

각 데이터 비트는 하나 이상의 패리티 계산에 포함될 수 있다. 여기서 각 r 비트들은 오직 한 번만 포함되는 반면, 각각의 원래의 데이터 비트들은 적어도 두 집합에 포함된다. 비트 위치를 2진수로 나타냈을 때, 최하위의 위치에 1을 포함한 모든 비트들을 사용하여 r1 비트를 계산한다. r2 비트는 두 번째 위치에 1을 가지고 있는 모든 비트를 사용하여 계산하며, 마찬가지로 다른 r 비트들도 계산한다.


수신기는, 해밍코드 값을 받으면, r1, r2, r3, r4 집합에 대응되는 위치의 비트를 이용하여 새로운 패리티를 계산한다. 이 새로운 패리티 값 순서대로 2진수로 조립한다. 여기서 얻어지는 값이 오류가 발생한 비트의 정확한 위치이다.