Page 30 - 컴퓨터구조(프로그래밍 관점에서 바라보는)도서 미리보기
P. 30
23CHAPTER 2? 컴퓨터 내부의 데이터 표현
2.3.2? 2진수로 변환: 소수 부분의 변환
0.2(10)와 같은 ‘1보다 작은 소수’가 있는 숫자는 어떻게 2진수로 변환할까?
실수의 변환을 위해서는 소수점 위에 있는 정수 부분은 위의 방식대로 변 정수 부분의 변환은 2로 나
환하면 되고, 소수점 아래의 소수 부분은 ‘2를 계속적으로 곱해가면서 정 누어가면서 구하고, 소수
수로 자리 올림’이 발생하는지 여부를 기록해서 이를 2진수 변환에 사용하 부분의 변환은 2로 곱해가
면 된다. 면서 구한다.
그 원리는 무엇일까?
10.1011(2)의 소수점 아래 1번째의 1이라는 숫자는 이 숫자에 2를 1번 곱
하면 0보다 큰 수(정수)가 된다. 왜냐하면 0.1(2)은 10진수로 보면 1/2(10) =
0.5(10)이기 때문에 여기서 2를 곱하면 1(10)이 되는 수이기 때문이다.
그렇기 때문에, 소수 부분의 2진수로의 변환은, 2을 계속 곱해가면서 정수
영역으로 올림수가 있는지를 기억해서 사용하면 된다. 아래와 같이 된다.
88 숫자 위의 작은 점은 끝이
없는 ‘무한 순환 소수’를 줄
0.2(10) ? 0.00110011…(2)??=??0.0011(2) 여 쓰기 위해, 반복되는 부
분의 시작과 끝 자릿수 위에
0 . 2(10) 곱하기 2 점을 찍어서 표현하는 방식
0 . 4 (10) 이다.
눈치 빠른 사람은 여기서 한
0 . 8 (10) 가지 눈치챘을 것이다. 10
진수에서는 유한 소수라고
1 . 6 (10) 하더라도 2진수에서는 무
한 소수가 될 수 도 있다. 10
1 . 2 (10) 진수 0.2(10)은 2진수로 변환
하면 무한 소수가 되기 때
0 . 4 (10) 문에 유한한 비트를 사용하
는 컴퓨터에서는 정확하게
0 . 8 (10) 표현할 수 없다!!!
컴퓨터가 0.2(10)도 정확하
1 . 6 (10) 게 표현하지 못하다니!! 사
실이다. 컴퓨터는 0.2(10)를
1 . 2 (10) 정확하게 표현할 수 없다!
실수의 소수 부분: 10진수의 2진수로의 변환