정보통신기사 필기

🔢 진수 변환 — 2진 · 8진 · 10진 · 16진

진수(Radix / Base) 는 한 자리에 쓸 수 있는 숫자의 개수. 컴퓨터는 2진수로 동작하지만 2진수는 자릿수가 길어 읽기 힘들기 때문에, 3비트씩 묶은 8진수와 4비트씩 묶은 16진수로 줄여 표기한다. 모든 변환의 핵심은 "2진수를 거쳐 가는 것" 하나뿐이다.
📋 4가지 진법 한눈에
진법사용 숫자한 자리 = 몇 비트표기예 (10진수 250)
2진수
Binary
0, 11 비트1010₂ · 0b1010 · 1010(2)11111010
8진수
Octal
0 ~ 73 비트372₈ · 0o372372
10진수
Decimal
0 ~ 9—250250
16진수
Hexadecimal
0~9, A~F4 비트FA₁₆ · 0xFAFA
🧮 진수 변환기 — 값을 넣으면 4가지 진법과 풀이 과정을 함께 보여줍니다
2진수 (Binary)
—
8진수 (Octal)
—
10진수 (Decimal)
—
16진수 (Hex)
—
예제 넣기 →
⚡ 가장 빠른 방법 — 자릿값 8칸 하나로 끝내기
진수 변환에서 외울 건 딱 한 줄이다.
128   64   32   16   8   4   2   1
이걸 먼저 적어두면 나눗셈이 아예 필요 없어진다. 아래 세 동작이 전부다 — ① 8칸 적기 → ② 큰 것부터 빼기 → ③ 4칸씩 끊기
🎛️ 직접 눌러 보세요
칸을 클릭해 1/0을 켜고 끄면, 10진수와 16진수가 바로 바뀝니다.
예제 →
① 10진수 → 2진수  큰 것부터 빼기
왼쪽부터 "뺄 수 있나?" 만 물어본다. 뺐으면 1, 못 뺐으면 0. 예) 200
자릿값1286432168421
뺄 수 있나? OO XX O XXX
결과 11 00 1 000
200 − 128 = 72 → 72 − 64 = 8 → 8 − 8 = 0 (끝) → 11001000(2)
💡 나눗셈으로 하면 8번 나눠야 하는데, 이 방법은 뺄셈 3번이면 끝난다. 0이 되는 순간 나머지 자리는 전부 0이라 더 볼 필요도 없다.
② 2진수 → 10진수  1인 자리만 더하기
128 64 32 16 8 4 2 1 1 1 0 0 1 0 0 0 128 + 64 + 8 = 200
💡 0인 자리는 쳐다볼 필요도 없다. 1인 곳만 눈으로 훑어서 더하면 끝.
③ 16진수  8칸을 4+4로 자르기
1100 1000 │ │ 8+4=12 8 C 8 → C8(16)
여기가 핵심 — 0~F 16줄을 외우려 하지 마세요. 4비트는 자릿값이 8 4 2 1 네 칸뿐이라, 그냥 더하면 나옵니다. 결과는 같은데 외울 게 없습니다.
④ 16진 ↔ 10진 (두 자리)  16배 + 나머지

16진 → 10진

C8
= 12 × 16 + 8
= 192 + 8 = 200

10진 → 16진

200 ÷ 16
= 12 … 나머지 8
12 = C → C8

💡 두 자리 16진수(= 1바이트)는 2진수를 거치지 않고 이 방법이 제일 빠르다.
🧠 알아두면 계속 써먹는 것
요령내용예
1이 n개 = 2ⁿ − 1 1이 쭉 이어지면 굳이 더하지 말고 바로 계산 1111 = 2⁴−1 = 15
11111111 = 2⁸−1 = 255
2배 = 오른쪽에 0 붙이기 절반은 반대로 0 하나 떼기 (시프트 연산) 1100(12) → 11000(24)
끝자리로 홀짝 판단 맨 오른쪽이 1이면 홀수, 0이면 짝수 → 검산용 11001000 → 끝이 0 → 짝수 ✔
자릿수로 크기 확인 8비트면 0~255, 16진 2자리면 0~255 (= 1바이트) FF = 255가 최대
서브넷 마스크 옥텟 1이 왼쪽부터 채워진 것뿐이라 순서대로 외워진다 128 192 224 240
248 252 254 255
📎 마지막 서브넷 마스크 옥텟은 서브넷팅 / CIDR 계산에 그대로 쓰인다 → 서브넷팅 단원 보기
✋ 정리 — 이 세 동작이 전부
① 자릿값 8칸 적기 → ② 큰 것부터 빼기 → ③ 4칸씩 끊기
아래에 나오는 "2로 나누기"는 교과서 방식이라 원리 이해용으로 보고, 실제 문제를 풀 때는 위 방법이 훨씬 빠르다.
⭐ 이것만 외우면 끝 — 4비트 대응표
2진수 4자리(0000~1111) = 16진수 한 자리(0~F) = 10진수 0~15. 이 16줄만 외우면 2진 ↔ 16진 변환은 암산으로 끝난다. 8진수는 3비트씩 묶어 0~7만 보면 된다.
0000
10진 0
16진 0
0001
10진 1
16진 1
0010
10진 2
16진 2
0011
10진 3
16진 3
0100
10진 4
16진 4
0101
10진 5
16진 5
0110
10진 6
16진 6
0111
10진 7
16진 7
1000
10진 8
16진 8
1001
10진 9
16진 9
1010
10진 10
16진 A
1011
10진 11
16진 B
1100
10진 12
16진 C
1101
10진 13
16진 D
1110
10진 14
16진 E
1111
10진 15
16진 F
8진수는 3비트 8줄이면 끝   000=0   001=1   010=2   011=3   100=4   101=5   110=6   111=7
📐 2의 거듭제곱 — 자릿값 표
2진수를 10진수로 바꿀 때 쓰는 자릿값. 오른쪽 끝이 2⁰ = 1 이고 왼쪽으로 갈수록 2배가 된다. 2¹⁰ = 1,024 ≈ 1K 만 기억하면 그 위는 곱셈으로 금방 나온다.
지수2⁰2¹2²2³2⁴2⁵2⁶2⁷2⁸2⁹2¹⁰
값 12 48 1632 64128 256512 1024
거꾸로도 자주 나온다 — log₂  log₂2=1 · log₂4=2 · log₂8=3 · log₂16=4 · log₂32=5 · log₂64=6 · log₂256=8 · log₂1024=10
나이퀴스트 공식(C = 2B·log₂M), QAM 진수별 비트 수, 해밍 코드 계산에서 그대로 쓰인다.
🚀 변환 요령 — 이 5가지가 전부
① 2진수 → 10진수  자릿값을 더한다
1 1 0 1 1(2) ↓ 각 자리에 자릿값을 붙인다 16 8 4 2 1 1 1 0 1 1 ↓ 1인 자리만 더한다 16 + 8 + 0 + 2 + 1 = 27
💡 1이 있는 자리만 더하면 끝. 0인 자리는 계산할 필요가 없다.
② 10진수 → 2진수  2로 나누고 나머지를 거꾸로 · 교과서 방식
27 ÷ 2 = 13 … 1 ↑ 13 ÷ 2 = 6 … 1 │ 아래에서 6 ÷ 2 = 3 … 0 │ 위로 3 ÷ 2 = 1 … 1 │ 읽는다 1 ÷ 2 = 0 … 1 ↑ → 11011(2)
💡 더 빠른 방법 — 큰 자릿값부터 빼기. 27에서 16을 빼면 11, 11에서 8을 빼면 3, 3에서 2를 빼면 1, 1에서 1을 빼면 0. 뺀 자리는 1, 못 뺀 자리는 0 → 16(1) 8(1) 4(0) 2(1) 1(1) = 11011. 나눗셈보다 훨씬 빠르다.
③ 2진수 ↔ 8진수  소수점 기준으로 3비트씩 묶는다
1 0 1 1 0 1 0(2) ↓ 오른쪽부터 3개씩 끊고, 모자라면 왼쪽에 0을 채운다 001 011 010 1 3 2 → 132(8)
💡 8 = 2³ 이라서 딱 3비트. 반대로 8진수 → 2진수는 각 자리를 3비트로 펼치면 된다. (7 → 111)
④ 2진수 ↔ 16진수  4비트씩 묶는다 — 가장 많이 쓰임
1 1 0 1 0 1 1 0(2) ↓ 오른쪽부터 4개씩 끊는다 1101 0110 13 6 → D 6 → D6(16)
💡 16 = 2⁴ 이라서 딱 4비트. 위의 4비트 대응표만 외우면 바로 읽힌다.
1바이트(8비트) = 16진수 정확히 2자리 → MAC 주소·IP·색상코드가 16진수인 이유.
⑤ 8진수 ↔ 16진수  직접 하지 말고 2진수를 경유
372(8) ↓ 각 자리를 3비트로 펼친다 011 111 010 ↓ 이어 붙이고 4비트로 다시 끊는다 0 1111 1010 → 1111 1010 F A → FA(16)
⚠ 8진 ↔ 16진을 10진수로 돌아가면 계산이 훨씬 길어진다. 반드시 2진수를 경유할 것.
🔸 소수점이 있을 때

소수부 10진 → 2진 : 2를 곱한다

0.75 × 2 = 1.5  ↓
0.5  × 2 = 1.0  ↓ (0이 되면 끝)
→ 0.11(2)

정수부는 나눗셈 나머지를 거꾸로, 소수부는 곱셈 정수부를 순서대로 읽는다.

소수부 2진 → 10진 : 자릿값이 12씩

0.1 0 1(2)
자릿값 = 0.5   0.25   0.125
→ 0.5 + 0 + 0.125 = 0.625

소수점 오른쪽은 2⁻¹, 2⁻², 2⁻³ … 순서.

소수점 묶기 주의 — 2진 ↔ 8진/16진에서 정수부는 소수점 기준 왼쪽으로, 소수부는 오른쪽으로 묶는다. 모자라는 자리는 바깥쪽에 0을 채운다. 예) 1.011₂ → 정수 0001, 소수 0110 → 1.6₁₆
➖ 보수(Complement) — 음수 표현
구분만드는 법예 (8비트, 5 = 00000101)
1의 보수모든 비트를 반전 (0↔1)11111010
2의 보수1의 보수 + 1
= 음수 표현에 실제 사용
11111011  (= −5)
r의 보수rⁿ − N (10진수면 10의 보수)10의 보수(365) = 1000 − 365 = 635
(r−1)의 보수(rⁿ − 1) − N (10진수면 9의 보수)9의 보수(365) = 999 − 365 = 634
💡 2의 보수를 빨리 만드는 법 — 오른쪽 끝에서부터 보면서 처음 나오는 1까지는 그대로 두고, 그 왼쪽은 전부 반전시킨다. 00000100 → 11111100. 반전 후 +1 하는 것보다 훨씬 빠르다.
🧩 함께 나오는 코드 체계
코드내용예 (10진수 25)
BCD
8421 코드
10진수 한 자리를 4비트 2진수로 각각 표현. 0~9만 사용하고 1010~1111은 쓰지 않음0010 0101
3초과 코드
Excess-3
BCD에 +3(0011)을 더한 코드. 자기보수 코드0101 1000
그레이 코드인접한 두 수가 1비트만 달라짐. 아날로그→디지털 변환 오차 방지2진 → 그레이 : 최상위는 그대로, 나머지는 인접 비트 XOR
ASCII7비트 문자 코드 (128자). 'A'=65=0x41, 'a'=97=0x61, '0'=48=0x30'A' = 0x41 = 1000001
📝 시험 포인트
• 2진 ↔ 8진 = 3비트씩, 2진 ↔ 16진 = 4비트씩 묶기 (8=2³, 16=2⁴)
• 8진 ↔ 16진은 반드시 2진수를 경유
• 10진 → 2진은 큰 자릿값부터 빼기가 나눗셈보다 빠름
• 음수 표현은 2의 보수 (1의 보수 + 1)
• 1바이트 = 8비트 = 16진수 2자리, 2¹⁰ = 1,024
• BCD는 1010 ~ 1111을 사용하지 않는다