부호 한 자리를 잘못 읽으면, 원래 수는 얼마나 달라질까?

인접 자리의 같고 다름으로 만든 부호화에서 한 자리 오류의 전파 범위와 원래 정수값의 최대 오차를 증명한다.

목재 작업대 위 흑백 원형 부호판과 광학센서, AI 생성 이미지

이미지: AI 생성 · 수학 이야기

한 자리씩 바뀌도록 만든 부호라고 한 자리 오류의 값 차이도 작을까? 자체 교육용 모형으로0·1의 m자리 표기 b를 다음 부호 g로 바꾼다. ⊕는 두 값이 같으면0,다르면1인 연산이며 b_m=0으로 둔다.

gi=bi⊕bi+1(0≤i<m).g_i=b_i\oplus b_{i+1}\quad(0\le i<m).

가장 높은 자리부터 b_(m−1)=g_(m−1)을 구하고 아래로 내려가면 모든 입력을 유일하게 복원한다. 같은 값을 두 번 더하는 ⊕ 연산은0을 만들므로 일반식은 다음과 같다.

bi=gi⊕gi+1⊕⋯⊕gm−1.b_i=g_i\oplus g_{i+1}\oplus\cdots\oplus g_{m-1}.

이제 g_k 하나만 잘못 읽어0과1을 뒤집는다. 역변환 식에 그 자리가 들어 있는 b_0,…,b_k가 모두 바뀐다. i>k의 식에는 g_k가 없어 상위 자리는 그대로다. 부호의 한 오류가 원래 표기의 k+1자리 오류를 만드는 것이다.

하위 k+1자리의 원래 정수값을 r라 하고 N=2^(k+1)−1이라 두자. 모두 뒤집으면 그 부분은 N−r가 된다. 상위 부분은 같아서 전체값의 차이는 N−2r다.

∣잘못 복원한 값−원래 값∣≤2k+1−1.|\text{잘못 복원한 값}-\text{원래 값}|\le 2^{k+1}-1.

r=0이나N이면 등호를 얻는다. m=4,k=2에서 입력0000의 부호0000을0100으로 잘못 읽으면0111,즉7로 복원된다. 이는 실제 장치의 오류율 측정이 아닌 정의로 만든 예다.

Cook의 글은 Gray code의 역변환을 설명한다. 새 질문은 그 복원 과정에 단일 오류를 넣어 바뀌는 자리와 오차의 범위를 추적한다. 교사는 “서로 이웃한 수의 부호 변화”와 “읽기 오류 뒤의 복원값 변화”를 다른 사건으로 설명하게 한다.

착안: John D. Cook, Inverse Gray code. 문항·오류 분석은 새로 작성했다.