오랜만에 해밍코드 문제를 접했는데 제가 이해를 잘못하고 있는 건지 아예 오류검출부터가 안 되네요ㅜㅜ
원래는 4비트이고, 짝수 패리티로 변환한 해밍코드가 1011000 입니다. 여기서 패리티 비트는 1011000인데,
1 + 3 + 5 + 7 : 0 2 + 3 + 6 + 7 : 1 4 + 5 + 6 + 7 : 1
이렇게 해서 6자리에 오류가 있다고 나옵니다;; 대체 어디서 잘못한 걸까요?
LSB first로 표시해서 원래 코드가 1000 이라면 짝수 패리티에 대한 해밍 코드는 1110000 이 되어야 합니다. 1011000 이면 이미 2자리가 틀리게 되어 해밍코드의 정정 능력을 초과하게 되죠. (오류가 검출되지만 고칠 수는 없는 상황입니다)
계산은 다음과 같이 합니다. (1000에 대한 계산입니다)
b1 b2 b3 b4 b5 b6 b7 c1 c2 1 c4 0 0 0
c1 = b3 + b5 + b7 ( 1 + 0 + 0 ) = 1 c2 = b3 + b6 + b7 ( 1 + 0 + 0 ) = 1 c4 = b5 + b6 + b7 ( 0 + 0 + 0 ) = 0
결과: 1 1 1 0 0 0 0
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
코드를 잘못 만든 것 같은데요
LSB first로 표시해서 원래 코드가 1000 이라면 짝수 패리티에 대한 해밍 코드는 1110000 이 되어야 합니다.
1011000 이면 이미 2자리가 틀리게 되어 해밍코드의 정정 능력을 초과하게 되죠.
(오류가 검출되지만 고칠 수는 없는 상황입니다)
계산은 다음과 같이 합니다. (1000에 대한 계산입니다)
b1 b2 b3 b4 b5 b6 b7
c1 c2 1 c4 0 0 0
c1 = b3 + b5 + b7 ( 1 + 0 + 0 ) = 1
c2 = b3 + b6 + b7 ( 1 + 0 + 0 ) = 1
c4 = b5 + b6 + b7 ( 0 + 0 + 0 ) = 0
결과: 1 1 1 0 0 0 0
댓글 달기