프로그래밍 강의/프로그래밍 정보

진수 간 상호 변환 방법

wnsrn3436 2014. 4. 22. 23:04

○ 10진수 -> N진수

 

10진법에서 임의의 진법으로 변환할 때에는 정수 부분과 소수 부분을 따로 처리한다.

여기서 정수 부분은 '10진수/N진수'로 몫이 0이 나올 때까지 계속하여 나눠주고 그 과정에서 나머지를 구하면 된다.

소수 부분은 '소수*N진수'로 소수 부분이 없어질 때까지 계속하여 곱해주고 그 과정에서 정수로 올라가는 수를 순서대로 나열하면 된다.

예를 들어 69.6875라는 10진수를 2진수로 변환하여보자.

 

 

먼저 정수 부분 69를 몫이 0이 될 때까지 2로 나눈다.

그리고 나온 나머지를 마지막에 나온 나머지부터 취하여 '1000101'이 10진수 69의 2진수 값이 되게 된다.

 

다음으로 소수 부분 0.6875를 2진수로 변환하기 위해서 2로 계속하여 곱하며, 그 과정에서 정수는 따로 취한다.

0.6875*2 -> 1.3750

0.3750*2 -> 0.7500

0.7500*2 -> 1.5000

0.5000*2 -> 1

여기서 나온 값인 1011이 0.6875의 2진수 값이 되게 된다.

 

이제 정수 부분과 소수 부분을 합치면, 69.6875는 1000101.1011의 2진수 값이 되는 것을 알 수가 있다.

 

○ N진수 -> 10진수

 

N진수에서 10진수로 변환할 때에는 각 자릿수에 해당하는 승수와 그 자릿수를 곱하여 전부 더하면 된다.

예를 들어 8진수 364.35를 10진수로 변환하여 보자.

 

(3*8^2) + (6*8^1) + (4*8^0) + (3*8^-1) + (5*8^-2)

= (192) + (48) + (4) + (0.375) + (0.078125)

= 244.453125

 

○ 2진수 <-> 8진수 혹은 16진수

 

2진수에서 8진수 혹은 16진수의 변환 방법은 아주 간단하다. (곰곰히 생각하면 너무나도 당연한 이야기이다)

2진수에서 8진수를 구하기 위해서는 2진수를 3자리씩 끊어서 8진수로 바꾸면 된다.

이와 유사하게, 2진수에서 16진수를 구하기 위해서는 2진수를 4자리씩 끊어서 16진수로 바꾸면 된다.

단지 끊어 읽을 때에, 소수 부분은 소수점부터 오른쪽으로 시작하되, 공간이 부족하면 0을 채워넣는다. (정수 부분은 소수점으로부터 왼쪽으로 시작한다)

 

예를 들어 2진수 10101101010010.0010101을 8진수로 변환하면 다음과 같다.

 

8진수 혹은 16진수를 2진수로 바꾸는 것 또한 간단하다.

8진수에서는 각 자리를 3개씩 2진수로 표현하면 된다, 마찬가지로 16진수에서는 각 자리를 4개씩 2진수로 표현하면 된다.

Comments