728x90
728x90
진법 간 변환
- 사람이 사용하는 수로 컴퓨터에 데이터를 입력하거나 연산을 요구하면, 컴퓨터는 자신이 사용하는 2진수로 변환하여 처리하며, 데이터가 방대해짐에 따라 8진수나 16진수로 표현하기도 한다.
- 10진수와 2진수는 어떤 진법으로든 변환이 가능하지만, 8진수와 16진수는 서로 직접 변환이 불가능하다.
- 그러므로 8진수를 16진수로, 또는 16진수를 8진수로 변환하기 위해서는 먼저 10진수나 2진수로 변환한 후에 8진수나 16진수로 변환해야 한다.
[1] 10진수 → 2진수 / 8진수 / 16진수
- 10진 실수를 2진수, 8진수 또는 16진수로 변환할 때는 정수부와 소수부를 변환하는 방법이 다르다.
정수부 구하기
- 몫이 0이 될 때까지 변환하려는 기수로 나누면서 각 단계마다 나오는 나머지를 나열하는 방식으로 구한다.
- 가장 먼저 얻은 나머지는 변환된 진수의 가장 오른쪽 자리(정수부 최하위 자리)에 위치
- 가장 나중에 얻은 나머지는 변환된 진수의 가장 왼쪽 자리(정수부 최상위 자리)에 위치
소수부 구하기
- 소수부가 0이 될 때까지 변환하려는 기수로 곱하면서 각 단계마다 나오는 정수부의 값을 나열하는 방식으로 구한다.
- 가장 먼저 얻은 정숫값은 변환된 진수 표현의 소수점에 가장 가까운 자리(소수부 최상위 자리)에 위치
- 가장 나중에 얻은 정수값은 가장 멀리 있는 자리(소수부 최하위 자리)에 위치
- 소수부가 0이 되지 않을 때가 있는데, 이때는 똑같은 소수부가 나올 때까지 변환하려는 기수를 곱하면서 각 단계마다 나오는 정수부의 값을 나열한다.
정리
예제 1 : $83.125_{10}$ 를 2진수로 변환하기
정수부 | 소수부 |
예제 2 : $163.875{10}$ 를 ① 2진수, ② 8진수, ③ 16진수로 변환하기
① 10진수 → 2진수
정수부 | 소수부 |
② 10진수 → 8진수
정수부 | 소수부 |
③ 10진수 → 16진수
정수부 | 소수부 |
[2] 2진수 / 8진수 / 16진수 → 10진수
- '진법별 표현' 게시글(https://dev-astra.tistory.com/138)에서 살펴본 진법별 표현 방법을 이용하면 2진수, 8진수, 16진수를 10진수로 변환할 수 있다.
- 2진수, 8진수, 16진수를 각각의 기수와 자릿수로 표현한 식을 계산하면 10진수로 변환된다.
① 2진수 → 10진수
예제 : $110.01_{2}$ 를 10진수로 변환하기
$111.01_{2} = 1 × 2^{2} + 1 × 2^{1} + 0 × 2^{0} + 0 × 2^{-1} + 1 × 2^{-2} = 7.25_{10}$
② 8진수 → 10진수
예제 : $243.7_{8}$ 를 10진수로 변환하기
$243.7_{8} = 2 × 8^{2} + 4 × 8^{1} + 3 × 8^{0} + 7 × 8^{-1} = 163.875_{10}$
③ 16진수 → 10진수
예제 : $A3.E_{16}$ 를 10진수로 변환하기
$A3.E_{16} = A × 16^{1} + 3 × 16^{0} + E × 16^{-1} = 10 × 16^{1} + 3 × 1 + 14 × 16^{-1} = 163.875_{10}$
[3] 2진수 ↔ 8진수 / 16진수
- 2진수를 8진수/16진수로 변환하거나 8진수/16진수를 2진수로 변환하려면 먼저 10진수로 변환한 다음 다른 진수로 변환하는 것이다.
- 하지만 이보다 더 간단한 방법은 비트(Bit, Binary Digit) 단위로 나누어 변환하는 것이다.
- 비트(Bit) : 컴퓨터에서 사용하는 가장 작은 정보 표현 단위로, 0 또는 1을 표현할 수 있다.
① 8진수 ↔ 2진수
8진수 → 2진수
- 8진수는 0과 7까지의 숫자로 표현한 수로, 이 범위에서 가장 큰 수인 7을 2진수로 변환하면 $111_{2}$ 로 3비트가 필요하다.
- 한 자리의 8진수를 2진수로 표현하려면 최대 3비트가 필요하다.
- 그러므로 8진수를 구성하는 각 자리의 숫자를 3비트로 구성된 2진수로 표현하면 8진수를 2진수로 변환할 수 있다.
예제 : $123.1_{8}$ 을 2진수로 변환하기
2진수 → 8진수
- 반대로 2진수를 8진수로 변환할 때는 2진수를 소수점 기준으로 3비트씩 한 단위로 묶고, 각 단위를 10진수로 표현하여 8진수로 변환한다.
예제 : $1010011.001_{2}$, $11100101.0100111101_{2}$ 을 8진수로 변환하기
② 16진수 ↔ 2진수
16진수 → 2진수
- 16진수는 0과 9까지의 수, 그리고 10부터 15까지의 수를 의미하는 `A` 부터 `F` 까지의 영문 대문자를 이용해 표현한 수로, 이 범위에서 가장 큰 수인 15(`F`)를 2진수로 변환하면 $1111_{2}$ 로 4비트가 필요하다.
- 한 자리의 16진수를 2진수로 표현하려면 최대 4비트가 필요하다.
- 그러므로 16진수를 구성하는 각 자리의 숫자를 4비트로 구성된 2진수로 표현하면 16진수를 2진수로 변환할 수 있다.
예제 : $53.2_{16}$ 을 2진수로 변환하기
2진수 → 16진수
- 반대로 2진수를 16진수로 변환할 때는 2진수를 소수점 기준으로 4비트씩 한 단위로 묶고, 각 단위를 10진수로 표현하여 16진수로 변환한다.
예제 : $1010011.001_{2}$, $1101110001001.0101000111001_{2}$ 을 16진수로 변환하기
[4] 8진수 ↔ 16진수
- 8진수와 16진수 간의 직접적인 변환은 불가능하기 때문에 10진수 또는 2진수로의 변환을 거쳐야 한다.
① 8진수 → 2진수 → 16진수
예제 : $123.1_{8}$ 을 16진수로 변환하기
② 16진수 → 2진수 → 8진수
예제 : $53.2{16}$ 를 8진수로 변환하기
728x90
728x90
'Mathematics > 이산 수학' 카테고리의 다른 글
[이산 수학] 조건 명제 (0) | 2022.10.02 |
---|---|
[이산 수학] 논리 연산자 (0) | 2022.10.02 |
[이산 수학] 명제 (0) | 2022.10.02 |
[이산 수학] 컴퓨터에서의 수의 표현과 연산 (0) | 2022.09.27 |
[이산 수학] 진법별 사칙연산 (0) | 2022.09.26 |
[이산 수학] 진법별 표현 (0) | 2022.09.20 |
[이산 수학] 수의 연산 (0) | 2022.09.19 |
[이산 수학] 수의 체계 (0) | 2022.09.15 |