[[소소한 일상]]/유용한 팁

소숫점을 가진 이진법의 십진법 변환의 이해

갑빠돌격기 2009. 4. 5. 20:43

역으로 2진법에서 10진법으로 바꾸는 과정을 생각해보세요.


임의의 2진수 0.1010110... 이 있다고 합시다.


특정 진법에서 각 자리수의 의미는 모두 정해져 있습니다.

2진법의 경우 첫째자리는 2^0, 둘째자리는 2^1, 셋째자리는 2^3, ...


소수점 이하에 대해서는, 소숫점 아래

첫째자리는 2^(-1), 둘째자리는 2^(-2), 셋째자리는 2^(-3), ...


따라서 이진수를 다음과 같이 전개 할 수 있습니다.

0.1010110... = 1*2^(-1) + 0*2^(-2) + 1*2^(-3) + ...


여기에 2를 곱하면


1.010110... = 1*2^0 + 0*2^(-1) + 1*2^(-2) + ...


여기서 나오는 소수점 위의 일의자리수 1이 소수점 이하 첫째 자리 수가 되는 겁니다.


이제 1을 따로 치워두고, 다시 2를 곱하면


0.10110... = 0*2^0 + 1*2^(-1) + ...


여기서 나오는 소수점 위의 일의 자리수 0이 소수점 이하 둘째 자리 수가 되는 겁니다.


이 과정은 질문자님의 궁금해 하신 과정


0.6                                      0.6 X 2 = 1.2     ........ 1

                                           0.2 X 2 = 0.4     ........ 0

                                           0.4 X 2 = 0.8     ........ 0

                                           0.8 X 2 = 1.6     ........ 1

                                           0.6 X 2 = 1.2     ........ 1

                                           ................

과 정확히 같은 거라는 걸 아시겠지요? 저기서는 0.6에 2를 곱해가며 소수점 위 일의자리에 올라오는 수 0또는 1을 순서대로 소수점 이하 몇째 자리 수라고 해주는거지요.


즉, 저 과정은 10진수 0.6을 이미 2진수로 변환 되었다는 가정하에 계속 2를 곱해주면서 각 자리의 실제 값이 0인지 1인지 뽑아가는(=확인해가는) 과정과 같은 거죠.