자격증 정복/임베디드기사(기능사)

임베디드기능사 필기 04 — 수의 진법과 코드화 (진법변환·BCD·그레이코드·해밍코드)

올드 IT직장인 2026. 9. 17. 02:00

임베디드기능사 필기 04 — 수의 진법과 코드화 (진법변환·BCD·그레이코드·해밍코드)

출제기준 대단원 3: 수의 진법과 코드화
계산 문제가 많이 나오는 파트예요. 직접 풀어보는 연습 필수!


진법 종류 ⭐

2진수  (Binary)    — 0, 1
8진수  (Octal)     — 0~7
10진수 (Decimal)   — 0~9
16진수 (Hexadecimal) — 0~9, A~F

진법 변환 ⭐⭐⭐

10진수 → 2진수

나눗셈 방법 (정수부):
13 ÷ 2 = 6 나머지 1
 6 ÷ 2 = 3 나머지 0
 3 ÷ 2 = 1 나머지 1
 1 ÷ 2 = 0 나머지 1
→ 아래에서 위로 읽으면: 1101₂

소수부는 2를 곱해서 정수 부분 순서대로:
0.625 × 2 = 1.25  → 1
0.25  × 2 = 0.5   → 0
0.5   × 2 = 1.0   → 1
→ 0.101₂

2진수 → 16진수

4비트씩 묶어서 변환
1010 1111₂
→ A F₁₆ = AF₁₆

주요 변환표

10진수 2진수 8진수 16진수
0 0000 0 0
8 1000 10 8
10 1010 12 A
15 1111 17 F
16 10000 20 10

2진수 연산 ⭐⭐

덧셈

0+0=0 / 0+1=1 / 1+0=1 / 1+1=10(올림)

예: 1011 + 0110
    1011
  + 0110
  ------
   10001

보수 ⭐⭐

1의 보수: 각 비트를 반전
  1010 → 0101

2의 보수: 1의 보수 + 1
  1010 → 0101 + 1 = 0110

2의 보수 활용: 뺄셈을 덧셈으로 처리
  A - B = A + (B의 2의 보수)

8비트 2의 보수 표현 범위: -128 ~ +127

기출 문제

Q. 10진수 -5를 8비트 2의 보수로 표현하면?

A.

+5 = 00000101
1의 보수: 11111010
2의 보수: 11111011

BCD 코드 ⭐⭐

10진수 한 자리를 4비트 2진수로 표현
8421 코드라고도 함

10진수 29 → BCD
2 = 0010
9 = 1001
→ BCD: 0010 1001

⚠️ BCD ≠ 2진수
  29₁₀ = 0001 1101₂  (순수 2진수)
  29₁₀ = 0010 1001 BCD  (BCD 코드)

3초과 코드 (Excess-3) ⭐

BCD + 3
0 = 0000+3 = 0011
1 = 0001+3 = 0100
5 = 0101+3 = 1000
9 = 1001+3 = 1100

자기 보수(Self-Complementing) 코드
→ 9의 보수가 1과 0을 바꾸면 나옴

그레이 코드 ⭐⭐

인접한 두 수가 1비트만 다른 코드
아날로그-디지털 변환, 회전 센서에 활용

2진수 → 그레이코드:
  MSB는 그대로
  나머지: 이전 비트 XOR 현재 비트

예: 2진수 1011 → 그레이코드
  1 → 1
  1 XOR 0 → 1
  0 XOR 1 → 1
  1 XOR 1 → 0
  → 1110

그레이코드 → 2진수:
  MSB는 그대로
  나머지: 이전 2진수 비트 XOR 현재 그레이비트

예: 그레이코드 1111 → 2진수
  1 → 1
  1 XOR 1 → 0
  0 XOR 1 → 1
  1 XOR 1 → 0
  → 1010

해밍 코드 ⭐⭐

오류 검출 및 정정이 가능한 코드

패리티 비트 수 계산:
  2ᵖ ≥ m + p + 1
  m: 데이터 비트 수, p: 패리티 비트 수

데이터 4비트 → p=3 (2³=8 ≥ 4+3+1=8)
데이터 8비트 → p=4 (2⁴=16 ≥ 8+4+1=13)

패리티 비트 위치: 1, 2, 4, 8, 16... (2의 거듭제곱)

패리티 비트 ⭐

짝수 패리티: 1의 개수가 짝수가 되도록
홀수 패리티: 1의 개수가 홀수가 되도록

단점: 2비트 동시 오류는 검출 불가

💡 실무에서는?

보안 시스템에서 데이터 무결성 확인에 해밍코드 원리가 쓰여요.

그레이코드는 회전 인코더, 절대 위치 센서에서 필수 사용되는 코드예요.


핵심 정리

✅ 진법 변환: 나눗셈(정수부), 곱셈(소수부)
✅ 2진수→16진수: 4비트씩 묶음
✅ 2의 보수: 1의 보수+1 / 뺄셈에 활용
✅ 8비트 2의 보수 범위: -128~+127
✅ BCD = 10진수 한 자리를 4비트로 (8421코드)
✅ 3초과 = BCD+3, 자기보수코드
✅ 그레이코드: 인접 수가 1비트만 다름
✅ 해밍코드: 2ᵖ≥m+p+1
  4비트→3개 / 8비트→4개

 

다음 편에서는 불 대수와 카르노맵으로 이어갑니다!

반응형
개인정보처리방침  |  블로그 소개