진법변환 쉽게 하는 방법은?
◈ 진법변환 ◈
1. 진법
정보처리기능사에서 다루는 진법은.. 2진수, 8진수, 10진수, 16진수 입니다.. (4진수가 나온 적도 있습니다..)
2진수 : 0, 1 → 수의 개수가 두 개이기에 2진수..
(4진수 : 0, 1, 2, 3 → 수의 개수가 네 개이기에 4진수..)
8진수 : 0, 1, 2, 3, 4, 5, 6, 7 → 수의 개수가 여덟 개이기에 8진수..
10진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 → 수의 개수가 열 개이기에 10진수..
16진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15) → 수의 개수가 열여섯 개이기에 16진수..
진법변환에 대해 알아보기 전에 각 진수별로 덧셈에 대해 간단히 알아봅니다..
※ 원리 : 각 진수의 마지막 수에 1을 더하면 자리올림된다..
각 진수별로 덧셈에 대해 이해가 되셨나요..?? 각 진수의 마지막 숫자(예: 10진수는 9, 8진수는 7, 2진수는 1, 16진수는 F)에 1을 더하면.. 같은 자리로는 더 이상 표현할 숫자가 없기에 '자리올림'이 발생합니다.. 진수별로 자리올림은 1을 앞에 쓰고 뒤에 0을 쓴다는 점은 같습니다..
자.. 그럼 본격적으로 진법변환에 대해 설명합니다..(더하기 빼기만 할 줄 알면 진법변환 할 수 있다!!!)
정석적인 방법은 이미 브릭님께서 강좌에 올리셨기 때문에.. 전 좀 다른 방법을 설명합니다..
※ 모든 진수는 2진수로 통한다..
☞ 10진수, 8진수, 16진수는 각각 바로 2진수로 바꿀 수 있다..
☞ 10진수, 8진수, 16진수 서로 간의 변환은 반드시 2진수를 통해서 한다..
☞ 10진수는 변환하려는 숫자보다 작거나 같은 수까지만 쓰고.. 뺐으면 1, 못 뺐으면 0을 쓴다..
<위의 그림이 깨져보이면.. 그림을 클릭하세요..>
복잡한 듯 하지만..;;; 중요한건 검정색 굵은 숫자와 빨간 숫자 입니다.. 검정색 굵은 숫자 아래의 지수 표시는 예의상;; 한 것이구요..
간단합니다.. 1부터 시작해서 왼쪽으로는 2씩 곱해나가면 되고.. 오른쪽(소수점이하)으로는 2씩 나누면 됩니다..
특히나, 소수점 이하 부분은 그냥 숫자를 외워버리세요..
주의할 점은.. 위의 숫자들은 1부터 세어 나가세요.. 1 2 4 8 16 32 등등.. 그리고, 쓸 때는 오른쪽에서 왼쪽으로 씁니다..
☞ 8진수의 8은 2의 3승(2 x 2 x 2)이죠..?? 즉, 1부터 시작해서 3개의 숫자를 씁니다.. 4, 2, 1
☞ 16진수의 16은 2의 4승(2 x 2 x 2 x 2)이죠..?? 즉, 1부터 시작해서 4개의 숫자를 씁니다.. 8, 4, 2, 1
※ 8진수와 16진수는 변환하려는 숫자의 한 자리마다 4, 2, 1 또는 8, 4, 2, 1 을 쓴다..
※ 8진수와 16진수의 소수점 자리 변환도 4, 2, 1 또는 8, 4, 2, 1 을 쓴다..
예제1) 10진수 24를 2진수로 변환?
풀이) 10진수 변환이니까 변환하려는 숫자보다 작거나 같은 수까지 일단 씁니다..
변환하려는 숫자인 24에서 맨 앞자리부터 빼기 합니다.. 뺐으면 1, 못뺐으면 0( '-'를 돌리면 '1'이죠..;;)
뺀 결과는 오른쪽으로 보내서 계속 빼기한다..
24에서 16을 뺐으니까 1을 쓰고 나머지 8은 오른쪽으로..
8에서 8을 뺐으니까 1을 쓰고 나머지 0은 오른쪽으로..
0에서 4를 뺄 수 없으니까 0을 쓰고(즉, 더 이상 뺄 수 없으니까) 나머지 숫자도 마찬가지로 0
즉, 10진수 24를 2진수로 바꾸면..
11000(2진수)
복잡한가요..?? 처음이라 그래요.. 몇 문제만 더 풀어보면.. 이보다 쉬울 순 없답니다.. ^^;
자.. 이번엔 위에서 나온 2진수 11000을 다시 10진수로 바꿔 볼까요..?
예제2) 2진수 11000을 10진수로 변환?
풀이) 먼저 2진수를 쓰고 일의 자리부터 1, 2, 4, 8, 16 등을 쓰고 1이 있는 자리의 숫자만 더한다..
1이 있는 숫자는.. 16과 8이고.. 이 둘을 더하면 24가 나오네요..
예제1에서의 풀이가 검증되었네요.. ^^
이제 몇 가지 예제를 들어볼테니.. 여러분도 직접 풀어보세요..
예제3) 10진수 89를 2진수로 변환?
풀이)
첫번째 나머지인 25에서 32는 뺄 수 없으니까 옆의 16을 뺀겁니다.. 당연히 32 부분은 빼기를 안했으니 0 이 되구요..
9에서 8을 뺀 나머지 1도 마찬가지로.. 1에서 4나 2를 뺄 수 없으니 마지막의 1을 뺀겁니다.. 역시 4와 2는 빼기를 안했으니 0 이구요..
즉, 2진수로 1011001 이 되네요..
예제4) 10진수 342를 2진수로 변환?
풀이)
답은.. 2진수 101010110 입니다..
☞ 이러한 방법의 장점은.. 큰 수의 진법변환도 쉽게 할 수 있다는 것입니다..
예제5) 10진수 32를 2진수로 변환?
풀이)
답은.. 2진수 100000 입니다..
예제6) 10진수 7.5를 2진수로 변환?
풀이) 이 문제는 소수점도 포함되었네요.. 위에서 10진수 소수점 쓴 거 기억하시죠..? (기억 안나면.. 가볍게 스크롤바를 위로..;;)
답은.. 2진수 111.1 입니다..
예제7) 10진수 5.25를 2진수로 변환?
풀이) 0.5는 0.25보다 크기때문에 뺄 수 없죠..
답은.. 2진수 101.01 입니다..
예제8) 10진수 5.625를 2진수로 변환?
풀이)
답은.. 2진수 101.101 입니다..
예제9) 10진수 0.375를 2진수로 변환?
풀이)
예제10) 10진수 1.5625를 2진수로 변환?
풀이)
답은.. 2진수 1.1001 입니다..
어떤가요..?? 감 잡으셨나요.. ^^
소수점도 어려울거 없습니다.. 저는 소수점 이하로 4가지만 다루었는데.. 실제로 처리에서는 저 4가지 정도만 알고 있으면 됩니다..
만약 5자리까지 나온다면 0.03125 까지 알아야 겠지만.. 극히 드문 경우입니다..
예제11) 2진수 1011을 10진수로 변환?
풀이)
1이 있는 자리의 수를 다 더하면 11이 되네요..
답은.. 10진수 11 입니다..
예제12) 2진수 100001을 10진수로 변환?
풀이)
답은.. 10진수 33 입니다..
예제13) 2진수 10.1을 10진수로 변환?
풀이) 정수부분 따로 더하고.. 소수부분 따로 더합니다..
답은.. 10진수 2.5 입니다..
예제14) 2진수 10.101을 10진수로 변환?
풀이)
답은.. 10진수 2.625 입니다..
예제15) 2진수 11.01을 10진수로 변환?
풀이)
답은.. 10진수 3.25 입니다..
지금부터는 8진수 ↔ 2진수, 16진수 ↔ 2진수 의 예제를 보시겠습니다..
8진수와 16진수의 변환은 10진수보다 쉽습니다..
예제16) 8진수 4를 2진수로 변환?
풀이) 저~어기 위에서 했던 말 기억하세요..?? 8진수는 3개.. 즉, 4, 2, 1
4에서 4를 뺐으니 1이고(위의 10진수 계산법 기억하시죠) 나머지는 0 이 되겠네요..
즉, 4, 2, 1 중에 더해서 4가 되는 수는 4 밖에 없죠..
답은.. 2진수 100 입니다..
예제17) 8진수 63를 2진수로 변환?
풀이)
첫번째 숫자인 6이 되려면 4, 2, 1 중 4와 2를 더해야 하고.. 두번째 숫자인 3이 되려면 2와 1을 더해야 하네요..
답은.. 2진수 110011 입니다..
예제18) 8진수 20을 2진수로 변환?
풀이)
첫번째 숫자인 2와 관련한 2진수는 010 이지만.. 앞의 0은 무의미하므로 쓰나마나겠죠..
답은.. 2진수 10000 입니다..
예제19) 8진수 15.62를 2진수로 변환?
풀이) 소수점이 들어간 8진수네요.. 방법은 똑같습니다..
2진수는.. 001101.110010 이지만 정수부분 맨 앞의 0과 소수부분 맨 뒤의 0은 무의미하므로..
답은.. 2진수 1101.11001 입니다..
예제20) 8진수 731.01을 2진수로 변환?
풀이)
답은.. 2진수 111011001.000001 입니다..
☞ 8진수와 16진수 관련 문제에서 큰 숫자가 나왔다고 겁먹을 필요 없습니다.. 어차피 계산법은 단순반복이니까요.. ^^
예제21) 16진수 5A를 2진수로 변환?
풀이) 16진수 A는 숫자로 10이죠..
답은.. 2진수 1011010 입니다..
예제22) 16진수 CF를 2진수로 변환?
풀이) C는 12, F는 15 죠..
답은.. 2진수 11001111 입니다..
예제23) 16진수 10.DB를 2진수로 변환?
풀이) D는 13, B는 11 이죠..
답은.. 2진수 10000.11011011 입니다..
예제24) 2진수 1001101.1101 을 8진수로 변환?
풀이) 2진수를 8진수로 변환하는 문제네요.. 방법은 같습니다..
주의할 것은.. 반드시 소수점을 기준으로 묶어나가야 한다는 것입니다..(8진수는 3개씩, 16진수는 4개씩)
답은.. 8진수 115.64 입니다..
예제25) 2진수 1001101.1101 을 16진수로 변환?
풀이) 2진수를 16진수로 변환하는 문제네요.. 방법은 같습니다..
답은.. 16진수 4D.D 입니다..
자아.. 지금까지 10진수 ↔ 2진수, 8진수 ↔ 2진수, 16진수 ↔ 2진수 간의 진법변환에 대해 알아봤습니다..
그리 어렵지 않죠..?? (어렵나요..??? --;;)
그런데.. 위에서 보니.. 공통적으로 들어가는 진수가 있죠..? 바로 2진수네요..
즉, 10진수, 8진수, 16진수 간의 진법변환은 일단 2진수로 바꾸고 다시 변환하면 되겠네요..
처음에 그랬죠.. 모든 진수는 2진수로 통한다!!! ^^
예제26) 10진수 89.25를 8진수로 변환?
풀이)
답은.. 8진수 131.2 입니다..
예제27) 10진수 89.25를 16진수로 변환?
풀이)
답은.. 16진수 59.4 입니다..
예제28) 8진수 15.6을 10진수로 변환?
풀이)
답은.. 10진수 13.75 입니다..
예제29) 16진수 2D.2D를 8진수로 변환?
풀이)
<위의 그림이 깨져보이면.. 그림을 클릭하세요..>
답은.. 8진수 55.132 입니다..
진법변환은 많이 풀다보면.. 거의 암산으로도 가능하게 됩니다.. ^^