반응형

디지털세계에서 데이터를 전송하다보면 잡음이나 오류등에 의해서 데이터  손실이나 변경이 일어나게 됩니다. 이를 우리는 에러(Error)라고 부르죠. 그래서 사람들은 생각했죠. 어떻게하면 에러가 발생했는지 알 수 있고 어디서 발생을 했는지 알 수 있을지에 대해서요. 이러한 오류 검사는 매우 중요한데 가장 대표적이면서 간단하게 사용할 수 있는것이 바로 패리티 비트입니다.


패리티 비트의 정의

패리티 비트라는 것을 사용하여 만드는 코드로서, 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트이다. 전송하고자 하는 데이터의 각 문자에 1 비트를 더하여 전송하는 방법으로, 1개의 비트 오류만을 검출할 수 있다. 또한 오류 발생 여부만 알 수 있지 오류를 수정할 수는 없다.. 각각의 패리티 코드 내의 1의 개수에 따라 홀수 패리티와 짝수로 나뉜다. 


패리티비트를 사용하기 위해서는 패리티 비트의 수를 구하는 것에서부터 시작합니다.



예를 들어 전송하는 데이터 크기가 8비트이라면 패리티비트는 4가 되는 것입니다.


Q. 데이터비트가 12비트일 때 패리티비트의 수는?

A.      4        (2^4>=11+4 를 만족)



패리티비트는 위의 그림에서 말했듯 1부터 2^n의 자리마다 배치가 됩니다. 자 그럼 저기에 들어가는 값들은 0아니면 1 둘중에 하나일텐데 무슨 값이 들어가는지 어떻게 알 수 있을까요? 예를 들어서 보도록 하겠습니다. 짝수패리티라고 가정하고 P1 ~ P4의 값들을 구해보도록 하죠.



패리티 비트구하기



위와 같은 방식으로 P1 ~ P4의 값을 구할 수 있습니다. 빈칸에 들어갈 값들을 보면

P1 = 1 0 1 0 1  -> 1

P2 = 1 1 1 1 1  -> 1

P3 = 0 1 1 1     -> 1

P4 = 0 1 1 1     -> 1

이 됩니다. 




자 그러면 만들어진 송신 코드는 P1 ~ P4까지의 값들을 내려보면 1 1 1 1 0 1 1 1 0 1 1 1이 됩니다.

그런데 2진수에서 1비트의 위치는 맨 오른쪽이기 때문에 저 값을 뒤집어줍니다. 

(지금 상태는 1비트와 12비트의 위치가 서로 반대 1비트가 맨 왼쪽 12비트가 맨 오른쪽)


그러면 최종 송신 코드는 1 1 1 0 1 1 1 0 1 1 1 1 이 됩니다. 

이렇게 만들어진 코드를 <해밍코드>라고 부릅니다.


그렇다면 수신측에서 수신받은 데이터가 오류가 있는지 확인을 해보도록 할까요?



오류 판별 방법


정상적코드 1 1 1 0 1 1 1 0 1 1 1 1이 전송 중 오류가 발생하여서 다음과 같이 변하였다고 해봅시다.

변화된코드 1 1 1 0 1 1 1 0 0 1 1 1 


그렇다면 다음과 같이 P1 ~ P4를 다시 구할 수 있겟죠.



앞에서 패리티비트는 1부터 2^n자리마다 배치가 된다고 했었죠? 만약 수신한 코드가 오류가 없는 코드였다면 페리티 체크 비트를 확인해보면 모두 다 0 이어야 합니다. 하지만 지금 P3이 1 인 것을 볼 수 있죠?


1 2 4 8 의 위치 중 P3의 값은 4이므로 4번째 비트가 오류입니다. 

확인을 해볼까요?


정상코드 1 1 1 0 1 1 1 0 1 1 1 1

오류코드 1 1 1 0 1 1 1 0 0 1 1 1


오른쪽부터 1번째 비트이니까 4번째 비트가 오류가 난 것을 확인을 할 수가 있습니다.



따봉버튼 한번씩만 눌러주세요~♥ 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기