최근에 들어간 단톡방의 사람들이 수준이 높아서 종종 대화하는 것을 읽다가
이해가 안가거나 궁금한 것을 캡쳐하던 중 재밌는 질문이 들어왔다.
100 - 64.1을 계산 했을 때 우리는 머리속으로 35.9를 생각한다.
컴퓨터의 경우, 아래의 사진처럼 전혀 다른 답을 내놓았다.
왜 결과가 이렇게 나오는 것일까?
컴퓨터는 사람처럼 자유롭게 생각할 수 없다
실제로
컴퓨터는 실수를 저장할 때 가수부와 지수부로 나뉘어 저장하기 때문이다.
이때 저장되는 방식은 아래와 같다.
$$ \left ( a \right )\times 2^b $$
a는 1보다 크거나 같고, 2보다 작은 실수이다.
b는 정수이다.
a(가수부)와 b(지수부)는
실제 메모리에 저장될 때는 다음과 같은 구조로 저장이 된다.
이는 IEE-754 부동소수점 표준에 의해
2진수로 저장되기 때문에 나타난다.
예를 들어 1,2,3과 같은 정수는 2진수로 표현이 가능하지만,
0.2나 3.141592...같은 무한, 순환, 유한 소수들은 2진수로 표현할 방법이 없다.
사람의 뇌는 기억력의 한계만 없다면 더 많이 기억할 수 있지만
컴퓨터에겐 메모리의 용량은 정해져 있고,
무한에 가까운 실수를 고작 8, 12~16 byte에 저장한다는 것은 불가능하다.