본문 바로가기
CS/컴퓨터구조

[Computer Architecture] 패리티 코드 , 해밍 코드

by 채채씨 2022. 1. 14.
728x90
반응형

패리티 코드와 해밍코드는 통신 과정에서 오류가 생기는 것을 검출 및 수정하기 위한 코드이다. 패리티 코드는 오류 검출만 가능하고 해밍 코드는 오류 검출과 수정 모두 가능하다.

 

패리티 코드(Parity Code)

패리티 비트 = 가장 끝 1비트

하나의 문자 또는 수는 8비트로 표현된다. 8비트는 ASCII Code(7비트)와 Parity Code(1비트)로 구성되어 있다. 패리티 비트의 위치는 가장 끝에 있다.
패리티 비트는 오류를 검출하기 위해 존재한다.

  • 홀수 패리티: 1의 개수가 홀수개가 되도록 패리티 비트를 설정한다.
  • 짝수 패리티: 1의 개수가 짝수개가 되도록 패리티 비트를 설정한다.


ex) A(65) : 1000001 + 패리티 비트

  • 홀수 패리티: 1000001+1
  • 짝수 패리티: 1000001 + 0

 

해밍 코드(Hamming Code)

패리티 비트 = 1, 2, 4번째 비트

해밍 코드는 오류를 검출하고 수정까지 할 수 있다. 따라서 오류 검출만 가능한 패리티 코드가 아닌 해밍 코드를 주로 활용한다. 패리티 비트의 위치는 1, 2, 4번째(2의 0승, 2의 1승, 2의 2승)이고, 나머지 3, 5, 6, 7번째 비트에 ASCII Code가 들어간다.

  • 통신 코드: 패리티 비트 추가
    • 1, 2, 4번째 패리티 비트를 채우기 위해 테이블에서 2의 0승, 2의 1승, 2의 2승을 하나씩 살펴보며 1을 가지는 10진수의 값을 확인한다. 그 10진수 값에 해당하는 위치의 값을 확인하고, 홀수 패리티면 값들의 합이 홀수가 되도록, 짝수 패리티면 값들의 합이 짝수가 되도록 패리티 비트를 채운다.

테이블

  • 수신 코드: 오류 검출 및 수정
    • ASCII Code+Parity Code를 받는다. 테이블에서 2의 0승, 2의 1승, 2의 2승을 하나씩 확인하며 1을 가지는 10진수 값을 확인한다. 짝수 패리티이면 1의 개수가 짝수개, 홀수 패리티이면 홀수개가 있어야한다. 개수가 맞으면 0, 틀리면 1을 기록한다. 기록한 수들을 역순으로 나열한 후 10진수로 바꾼다. 10진수로 변환된 수 위치에서 오류가 난 것이며, 해당 값을 바꾼다. (1 to 0, 0 to 1)

 

※ 패리티 코드와 해밍 코드의 한계점

오류가 홀수개일 때는 잘 검출되지만, 짝수개일 때는 오류를 검출할 수 없다.

 



[reference]

728x90
반응형

댓글