디지털 코드
BCD 코드(Binary Coded Decimal Code)
BCD 코드
BCD 코드: 10진수 각 자리(0~9)를 4비트 이진수로 표현하는 코드
aka. 8421 코드 : 각 비트의 가중치는 8, 4, 2, 1
- 4비트로 0(0000)부터 9(1001)까지만 사용
- 1010(10)부터 1111(15)까지 여섯 가지 조합은 미사용
- 여러 자리수 표현 시에는 각 자리마다 4비트를 연이어 나열
ex. 10₁₀ → 0001 0000
BCD 코드의 형태
BCD 코드의 연산
이진 덧셈 결과가 9(1001)를 초과하는 경우,
BCD 유효 범위를 벗어나므로 6(0110)을 더해 보정해야 함
정상 범위 내 연산 (보정 없음)
-
10진수 6 + 3 = 9

-
10진수 42 + 27 = 69

유효 범위 초과 → 보정 필요
가중치 코드(weighted code)
각 비트에 2, 4, 2, 1의 가중치를 부여해 4비트로 한 자리 10진수를 표현
- 자기보수(self-complementing) 성질
: 어떤 수 n의 2421 코드를 비트 반전(bitwise-NOT) 하면
→ (9–n) 의 2421 코드가 됨
비가중치코드(non-weighted code)
3-초과 코드
각 10진수 n을 먼저 BCD(8421)로 표현한 뒤, 0011₂(=3) 을 더한 값
- 자기보수(self-complementing) 성질
: 코드 비트 반전(bitwise NOT) = (9–n) 의 3-초과 코드
그레이 코드(Gray Code)
- 테이블의 어느 두 이웃한 코드끼리 비트 하나만 다름
- 아날로그-디지털 변환기(ADC)나 입출력 장치 등에서 사용

그레이 코드(Gray Code) 변환 방법
2진수 → 그레이 코드 변환
- 최상위 비트(MSB)는 그대로 복사
- 그다음 비트들(2번째, 3번째, …)은 현재 비트 ⊕ 이전 비트 연산
G₃ = b₃ = 1
G₂ = b₃ ⊕ b₂ = 1 ⊕ 0 = 1
G₁ = b₂ ⊕ b₁ = 0 ⊕ 1 = 1
G₀ = b₁ ⊕ b₀ = 1 ⊕ 1 = 0
그레이 코드 → 2진수 변환
- 최상위 비트(MSB)는 그대로 복사
- 다음 비트들(2번째, …) = 이전에 복원된 2진 비트 ⊕ 현재 그레이 비트
b₃ = G₃ = 1
b₂ = b₃ ⊕ G₂ = 1 ⊕ 1 = 0
b₁ = b₂ ⊕ G₁ = 0 ⊕ 1 = 1
b₀ = b₁ ⊕ G₀ = 1 ⊕ 0 = 1
에러 검출 코드
패리티 비트(parity bit)
전송할 데이터 비트열에 추가비트를 붙여,
전송 도중 비트 오류를 검출하기 위한 방법
→ 짝수 개(2개, 4개…) 비트 오류가 동시에 발생하면 검출 못 함
패리티 비트를 사용한 에러 검출 방법
송신측
- 7개의 데이터 비트(D₁~D₇)를 패리티 비트 발생기에 입력
- 짝수/홀수 패리티 규칙에 따라 P를 생성하여 8비트(7비트+P)로 전송
수신측
- 전송선로를 거쳐 온 8비트(D₁’~D₇’, P’)를 에러 검출기에 입력
- 동일한 패리티 규칙으로 다시 계산한 패리티와 수신된 P’를 비교
- 불일치 시 에러 표시(Y=1), 일치 시 정상(Y=0)
패리티 비트를 사용한 에러 검출 예제
홀수 패리티에서
10110, 11010, 110011, 10101110100, 1100010101011 수신
1의 개수 세기 :
병렬 패리티 (가로와 세로의 1의 개수를 세어봄)
2차원(블록) 패리티를 이용한 에러 검출·정정 방식
- 데이터를 가로 × 세로 형태의 블록으로 묶고,
- 각 행(row)과 각 열(column)에 패리티 비트를 붙여 전송
수신 시 다시 모든 행·열의 패리티를 검사하여 단일 비트 오류를 검출·위치 지정