
컴퓨터는 숫자들을 2진수로 표현을 한다.
그러면 실수와 같은 소숫점이 있는 숫자들은 어떻게 표현을 해야할까?
마찬가지로 2진수를 사용한다. 이런 소숫점이 있는 아이들은 2가지 방식으로 컴퓨터가 처리를 할 수 있는데 먼저 첫번째는 Fixed point(고정 소숫점), 그리고 두번째는 Floating Point(부동 소숫점)이다.
소숫점 위치를 정해두고 sign bit, integer bit(정수부), fraction bit(소수부)로 나뉜다. 말 그대로 고정이기 때문에 소숫점 위치를 마음대로 정해서 넣어버리면 된다. 그러면,


0.45를 2배해주면 0.9가 된다. 이러면 1보다 작기 때문에 binary로는 0이 들어가게 된다. 다음으로 0.9의 2배인 1.8이 1보다 크기 때문에 뒤에 1을 넣고 1을 뺴준다. 그러면 0.8이 된다. 이 과정을 우리가 필요한 bit만큼(위의 고정소숫점에서 26bit, 부동소숫점에서는 23bit) 구한다. 이러면 소수부의 2진수 변환이 되는것이다.이러한 고정소수점 방식은 구현하기 편리하지만 사용하는 비트 수 대비 표현 가능한 수의 범위 또는 정밀도가 낮기 때문에 실수를 다룰 필요가 있는 범용 시스템에서는 거의 안 쓰이고, 높은 정밀도가 필요없는 소규모 시스템에서는 간혹 쓰이기도 한다고 한다.
따라서 이런 문제를 해결하기 위해서 소수점을 고정하지 않고 둥둥 떠 다닐 수 있게 하는 부동 소수점(floating point)을 사용한다.

참고
https://gsmesie692.tistory.com/94
https://steemit.com/kr/@modolee/floating-point
https://en.wikipedia.org/wiki/IEEE_754