컴퓨터를 사용하면서 10진수, 2진수, 8진수, 16진수로 각각 표현된 수들을
필요에 따라서 진법의 수로 변환할 경우가 있습니다.
강의 교재에서는 소수점 이하의 값이 포함되지 않은 정수변환에 관해서만 나와 있어서
저는 소수점 이하의 값도 고려한 진법 변환의 방법을 조사해보았습니다.
현재 우리가 널리 사용하는 기수법은 10진법이며
교재에서도 2진법, 8진법 16진법, 10진법이 소개 되어있습니다.
책에서는 13진법과 같은 기수법은 자주 쓰이지 않는다고 했지만
옛날부터 사람들은 12진법, 16진법, 60진법 등 다양한 진법을 사용해 왔습니다.
(기원전 바빌로니아 인은 하늘을 360등분해서 12성좌를 만들고 1년을 12개월로 나누었다.
영국에서는 최근까지 통화의 단위로 12펜스를 1실링으로 하는 12진법을 사용했다.
중국은 이미 5000년 전부터 12라는 수를 사용해 왔다. 해와 달이 한 달에 한 번 만나고,
일 년에 열두 번 만나는 것으로 음력 달력을 만들어 사용하였다. 하루를 오전과 오후
영국에서는 최근까지 통화의 단위로 12펜스를 1실링으로 하는 12진법을 사용했다.
중국은 이미 5000년 전부터 12라는 수를 사용해 왔다. 해와 달이 한 달에 한 번 만나고,
일 년에 열두 번 만나는 것으로 음력 달력을 만들어 사용하였다. 하루를 오전과 오후
로 나누어 각각 12 시간으로 정하고 있다. 60진법은 메소포타미아에서 사용된 것으로
알려져 있고 바빌로니아의 점토판에 설형문자로 기록되어 있는게 발견되었다.
60진법은 분 초 시간 단위의 60과 각도 360도에 사용되고 한해가 12개월로 나눠지는
것도 60진법의 영향이라는 말이 있다.)
알려져 있고 바빌로니아의 점토판에 설형문자로 기록되어 있는게 발견되었다.
60진법은 분 초 시간 단위의 60과 각도 360도에 사용되고 한해가 12개월로 나눠지는
것도 60진법의 영향이라는 말이 있다.)
진법이 크면 처음에 배우기가 힘들어서 그렇지 배우고 나면 단위세기도 편하고 편했을 것 같
습니다. 60진법의 경우 숫자를 60개나 외워야 한다니 끔찍할 것 같네요.
디지털시대가 오고 2진법이 적용되는 디지털 시스템이 보편화 되면서 2진법은 10진법과 함
께 자주 사용되기 시작했습니다. 그리하여 우리가 사용하는 10진법의 숫자를 2진법 8진법
16진법으로 바꾸거나 다시 역으로 바꾸는 방법을 익혀야 하는데요.
정수부 변환은 책에 나와 있으니 소수부 변환을 중점적으로 정리해보았습니다.
▸2진수↔8진수, 2진수↔16진수
정수 부분에서 8진수나 16진수는 2진수로 바꾸었을 때 연관성이 생기는데요.
그 이유는 2^3 = 8(즉, 2진수 세 자리수의 값을 가짐)이고 2^4 = 16(즉, 2진 네 자리수의
값을 가짐)이기 때문입니다. 소수 부분도 이와 마찬가지로 2^-3 의 값은 1/8 이고 2^-4 의
값은 1/16 이기 때문에 2진수 소수부분 세 자리가 8진수 소수부분 한자리가 되고, 2진수 소
수부분 네 자리가 16진수 소수부분 한 자리가 됩니다.
- 2진수를 8진수로 변환
→ 소수점을 기준으로 왼쪽과 오른쪽으로 3자리씩 끊어서 계산
→ 자리가 안 될 땐, 끝에 0을 넣어서 계산
- 8진수를 2진수로 변환
→ 8진수 숫자 하나가 2진수의 3자리로 생각하여 계산
(0.11110001)₂⇒ (0.742)₈
(111)₂= (7)₈
(100)₂= (4)₈
(010)₂= (2)₈ (※ (01)₂= (1)₈ 이 아님, 끝에 0을 넣어서 세 자리를 맞추어서 계산)
(0.742)₈ ⇒ (0.11110001)₂
(7)₈ = (111)₂
(4)₈ = (100)₂
(2)₈ = (010)₂
- 2진수를 16진수로 변환 & 16진수를 2진수로 변환
→ 2진수와 8진수와의 변환방법과 비슷하지만
3자리씩 계산하는 것이 아니라 4자리씩 끊어서 계산
▸10 진수를 2진수, 8진수, 16진수로 변환
우선 이와 같이 변환하는 경우에 간단한 요점은
1. 10진수를 정수부분과 소수부분으로 나누어서 계산하는 것과
2. 정수는 나누고 소수는 곱하는 것입니다.
간단히 예를 들어 설명하자면 다음과 같습니다.
- (정수부분)
10진법의 수 17을 2진법의 수로 나타낼 때
17을 2로 나누어 몫과 나머지로 나눈다.
몫이 0 이 될 때까지 2로 계속 나누면서 몫을 구한다.
나머지를 얻어진 역순으로 나열한다.
- (소수부분)
10진법의 수 0.125를 2진법의 수로 나타낼 때
2를 나누어 주는 것이 아니라 2를 계속 곱해준다.
정수부분의 값을 써주고, 정수부분을 없앤 소수부분에 대해서 2를 다시 곱한다.
소수부분이 0이 될 때까지 반복하여 정수 부분의 값을 구한다.
이렇게 구하면 0.125의 이진수 값은 (0.001)₂이 구해집니다.
0.875의 이진수 값은 (0.111)₂이 나오는데
0.125 + 0.875 = 1
(0.001)₂+ (0.111)₂ = (1)₂ 으로써 결과 값이 같은 것을 알 수 있습니다.
----------------------------------------------------------------------------------------