В своём функционировании любая автоматизированная 시스템은 데이터에 대한 적절한 인식, 수신 된 정보의 순도, 오류 발견 및 수정 문제에 직면 해 있습니다. 정보 처리 객체에 할당 된 작업이 심각할수록 소프트웨어 흐름의 실패와 정보 흐름의 오류를 식별하기위한 시스템이 복잡하고 민감 해집니다.
정보 확인을위한 옵션 중 하나오류 스트림 및 심지어 수정은 숫자 정보의 인코딩입니다. 다양한 데이터로 작업 할 때 사용되는 많은 코드와 방법이 있습니다. 소위 해밍 코드는 전형적인 예이며, 데이터 전송 중에 발생하는 오류를 찾아서 제거하는보다 복잡하고 정교한 방법을 만드는 출발점이되었습니다.
История появления кода начинается в средине 1940 년대 현재 Richard Hamming은 저명한 Bell Labs에서 일하면서 계산 기계 Bell Model V를 마스터했습니다. 그런 다음 전자 기계적 작용 원리를 사용하는 초현대적 메커니즘이었습니다. 기계 설계에는 릴레이 블록이 사용되었습니다. 그들의 사용은 속도를 크게 향상시키지 못했습니다. 하나의 회전을 완료하는 데 몇 초가 걸렸습니다. 펀치 카드를 사용하여 데이터를 입력했으며, 읽는 과정에서의 오류는 드물지 않았습니다. 주중에는 발견 된 오류를 감지하고 수정하기 위해 특수 코드가 사용되었습니다. 기계는 전구의 빛으로 운전자에게 알 렸으며, 결과적으로 오류를 수정하고 계산 과정을 다시 시작했습니다. 그러나 주말에는 다른 규칙에 따라 프로세스가 진행되었습니다. 오류가 감지되면 기기는 자동으로 첫 번째 프로그램의 실행을 중지하고 다른 프로그램의 실행을 진행했습니다.
해밍은 매우 자주 일해야했기 때문에주말에 그는 자신이 일했던 프로그램을 다시 시작해야 할 때마다 펀치 카드의 신뢰성이 없기 때문에 컴퓨터의 비슷한 행동에 매우 짜증이났습니다. 그는 가장 효과적인 오류 수정 알고리즘을 구축하는 데 몇 년을 보냈습니다. 그 결과 1950 년까지 그는이 문제를 해결하기위한 최선의 방법을 찾아서 대중에게 알리게되었습니다.
Richard Hamming이 제안한 결과물즉시 널리 퍼졌습니다. 정보를 인코딩하는 방법은 몇 개의 큰 블록으로 보충되었습니다. 예를 들어, 체계적 코드는 소위 분리 가능한 코드 (즉, 모든 문자가 정보와 검증으로 구분되는)로 구성된 블록으로 구성된 큰 그룹을 나타냅니다.
체계적인 코드에는 기능이 있습니다확인 문자는 정보 문자에 대한 선형 연산의 결과입니다. 또한, 임의의 허용 된 코드 조합에서, 독립적 인 선형 코드 조합 세트에 대해 수행 된 선형 연산으로부터 결과를 얻을 가능성이있다.
해밍 코드는자가 점검 코드. 이 코드를 사용하면 데이터 전송 중 오류를 자동으로 감지 할 수 있습니다. 그것들을 만들려면 각 단어에 하나의 제어 (증분) 이진수를 할당하면됩니다. 숫자는 이미지의 총 단위 수가 조건에 따라 짝수가되도록 선택됩니다.
단일 오류가 발생하면 총 단위 수에서 패리티가 변경됩니다.
오류 수정으로 이어지는 코드자동 수정이라고하는 자동 모드. 이러한 코드를 빌드하기 위해 하나의 제어 비트로는 더 이상 충분하지 않습니다. 가장 흥미로운 것은 이진 블록 코드입니다.
요약하면, 우리는 해밍 코드가 단위 문자의 수를 검사하는 패리티의 원리를 사용한다고 결론 지을 수 있습니다.