해밍 코드 계산기
데이터 비트에서 해밍 코드의 패리티 비트를 구하고, 한 비트를 뒤집어 보면서 신드롬이 어떻게 오류 위치를 그대로 가리키는지 확인합니다. SECDED로 두 비트 오류를 알아채는 것까지 다룹니다.
0과 1만. 공백은 무시합니다.
(7,4) 해밍 부호
0110011
데이터 4비트 + 패리티 3비트 · 효율 57.1%
파란 글자가 패리티 비트입니다.
담당 자리의 1 개수를 짝수로 맞춥니다.
0이면 그대로 둡니다. 1~7 중에서 고르세요.
데이터가 길어질수록 패리티의 몫이 줄어듭니다.
사용 방법
- 1데이터 비트를 0과 1로 넣습니다.
- 2패리티가 어느 자리를 담당하고 어떤 값이 나왔는지 확인합니다.
- 3한 비트를 뒤집어 보면 신드롬이 그 자리를 가리키는 것이 보입니다.
- 4오류 찾기 모드에서는 받은 부호를 넣어 어디가 틀렸는지 찾습니다.
자주 묻는 질문
패리티 비트를 여러 개 겹쳐 두어 한 비트 오류를 스스로 고칠 수 있게 만든 부호입니다. 패리티 하나만 붙이면 "틀렸다"는 것만 알 수 있는데, 해밍이 1950년에 찾아낸 배치를 쓰면 어디가 틀렸는지까지 알 수 있습니다.
그래야 신드롬이 오류 위치가 되기 때문입니다. p번 패리티는 자리 번호를 2진수로 썼을 때 p 비트가 켜진 자리들을 담당합니다. 받는 쪽에서 어긋난 패리티들의 자리 번호를 더하면 그 합이 그대로 틀린 비트의 위치가 됩니다. 다른 자리에 두면 이 성질이 사라집니다.
패리티를 다시 검사했을 때 어긋난 것들의 자리 번호를 더한 값입니다. 0이면 오류가 없고, 0이 아니면 그 숫자가 곧 틀린 비트의 위치입니다. 예를 들어 2번과 4번 패리티가 어긋났다면 신드롬은 6이고 6번 자리가 틀린 것입니다.
데이터 k비트에 대해 2^r ≥ k + r + 1을 만족하는 가장 작은 r개입니다. 데이터 4비트면 3개(7,4), 11비트면 4개(15,11), 26비트면 5개(31,26)입니다. 데이터가 길어질수록 패리티의 몫이 줄어 효율이 좋아집니다.
오히려 망칩니다. 신드롬이 엉뚱한 자리를 가리켜 멀쩡한 비트를 뒤집어 버리기 때문입니다. 그래서 실제로는 전체 패리티를 하나 더 붙인 SECDED를 씁니다. 고치지는 못해도 "두 개가 틀렸다"는 것은 알 수 있어 잘못 고치는 것보다 낫습니다.
그렇습니다. 서버용 ECC 메모리는 대개 데이터 64비트에 8비트를 붙인 SECDED 방식으로, 한 비트 오류는 조용히 고치고 두 비트 오류는 시스템에 알립니다. 우주선이나 위성처럼 방사선으로 비트가 뒤집히는 환경에서도 같은 원리를 씁니다.
알아두면 좋은 점
- 패리티는 짝수 패리티(담당 자리의 1 개수를 짝수로 맞춤) 기준입니다.
- 자리 번호는 1부터 셉니다. 0번 자리는 없습니다.
- 데이터는 64비트까지 넣을 수 있습니다.
- 해밍 코드는 오류 정정용이고, 오류 검출만 하려면 CRC가 더 효율적입니다.
함께 보면 좋은 도구
마지막 검증: 2026년 8월 30일 · 결과는 참고용 추정치입니다.