1. 10진법, 2진법, 8진법, 16진법
1. 수의 정의
수란 양(量)을 표현하기 위한 추상적인 개념으로, 우리가 숫자로 표기하고 연산할 수 있는 대상이다.
2. R진법(기수법, Radix Notation)
진법이란 수를 표기하는 기본 체계를 의미하며, 기수(radix, R) 라고 불리는 기본수를 기반으로 숫자를 표현한다.
- R진법에서 표현되는 수 NN은 다음과 같이 나타낼 수 있다.N=DmDm−1...D1D0.D−1D−2...D−nN = D_m D_{m-1} ... D_1 D_0 . D_{-1} D_{-2} ... D_{-n}여기서,
- DiD_i : 각 자리의 숫자 (digit value)
- RR : 기수 (base number)
- RiR^i : 각 자리의 가중치 (weight of digit)
- 0≤Di<R0 \leq D_i < R
즉, 진법이 다르면 같은 수라도 다른 방식으로 표현된다.
3. 주요 진법과 특징
진법 기수(R) 사용 가능한 숫자 가중치의 증가 예시
2진법 (Binary) | 2 | 0, 1 | 2n2^n | 10112=1×23+0×22+1×21+1×20=11101011_2 = 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 11_{10} |
8진법 (Octal) | 8 | 0 ~ 7 | 8n8^n | 578=5×81+7×80=471057_8 = 5 \times 8^1 + 7 \times 8^0 = 47_{10} |
10진법 (Decimal) | 10 | 0 ~ 9 | 10n10^n | 45210=4×102+5×101+2×100452_ {10} = 4 \times 10^2 + 5 \times 10^1 + 2 \times 10^0 |
16진법 (Hexadecimal) | 16 | 0 ~ 9, A ~ F | 16n16^n | 2F16=2×161+15×160=47102F_ {16} = 2 \times 16^1 + 15 \times 16^0 = 47_{10} |
💡 8진법과 16진법은 2진수를 그룹으로 묶어 표현하기 때문에 컴퓨터에서 효율적으로 사용된다.
2. 진법 변환
1. 2ⁿ진법 → 10진법 변환
각 자리 숫자에 해당 진법의 가중치를 곱한 후 모두 더한다.
예제 1: 2진수 → 10진수
11012=(1×23)+(1×22)+(0×21)+(1×20)1101_2 = (1 \times 2^3) + (1 \times 2^2) + (0 \times 2^1) + (1 \times 2^0) =8+4+0+1=1310= 8 + 4 + 0 + 1 = 13_{10}
예제 2: 8진수 → 10진수
3458=(3×82)+(4×81)+(5×80)345_8 = (3 \times 8^2) + (4 \times 8^1) + (5 \times 8^0) =192+32+5=22910= 192 + 32 + 5 = 229_{10}
예제 3: 16진수 → 10진수
1A316=(1×162)+(A×161)+(3×160)1A3_ {16} = (1 \times 16^2) + (A \times 16^1) + (3 \times 16^0)
(A = 10)
=256+160+3=41910= 256 + 160 + 3 = 419_{10}
2. 10진법 → 2ⁿ진법 변환
1) 10진수 → 2진수 변환 (나머지 방식 사용)
예제: 191019_{10} 을 2진수로 변환
나눗셈 몫 나머지
19 ÷ 2 | 9 | 1 |
9 ÷ 2 | 4 | 1 |
4 ÷ 2 | 2 | 0 |
2 ÷ 2 | 1 | 0 |
1 ÷ 2 | 0 | 1 |
위쪽에서 아래로 나머지를 읽으면 19의 2진수 표현: 10011_2
2) 10진수 → 8진수 변환
예제: 831083_{10} 을 8진수로 변환
나눗셈 몫 나머지
83 ÷ 8 | 10 | 3 |
10 ÷ 8 | 1 | 2 |
1 ÷ 8 | 0 | 1 |
결과: 123_8
3) 10진수 → 16진수 변환
예제: 27510275_{10} 을 16진수로 변환
나눗셈 몫 나머지
275 ÷ 16 | 17 | 3 |
17 ÷ 16 | 1 | 1 |
1 ÷ 16 | 0 | 1 |
결과: 113_{16}
3. 8진수 ↔ 16진수 변환 (2진수를 거쳐 변환)
8진수와 16진수는 2진수를 거쳐 변환하면 간단하다.
1) 8진수 → 2진수 → 16진수
예제: 3458345_8 을 16진수로 변환
- 8진수를 2진수로 변환 (각 자리 숫자를 3비트로 변환)
38=0112,48=1002,58=10123_8 = 011_2, 4_8 = 100_2, 5_8 = 101_2
즉, 3458=0111001012345_8 = 011100101_2 - 2진수를 16진수로 변환 (4비트씩 묶음)
0111 0010 1 → 0111 0010 0001 (앞에 0 추가)
0111 = 7, 0010 = 2, 0001 = 1 - 결과: 72_16
📌 요약 정리
✅ 2ⁿ진법 → 10진법: 각 자리 숫자 × 해당 진법의 가중치 → 모두 더하기
✅ 10진법 → 2ⁿ진법: 해당 진법으로 나누고 나머지 기록 → 나머지를 역순으로 읽기
✅ 8진수 ↔ 16진수: 2진수를 거쳐 변환 (8진수는 3비트, 16진수는 4비트씩 묶기)