반응형

컴퓨터에서 실수를 2진수로 표현할텐데, 이건 저장을 할 때 어떻게 저장을 하는지 갑자기 궁금해졌다.

한번 알아보도록 하자.

고정소수점 방식(fixed point)

실수는 정수부와 소수부로 나눌 수 있다.

고정소수점 방식은 소수부의 자릿수를 미리 정하여, 고정된 자릿수의 소수부를 표현하는 방식으로 생각하면 된다.

32비트 실수를 고정소수점 방식으로 표현하면

요렇게 된다.

하지만 이 방식은 정수부와 소수부의 자릿수가 한계가 있어, 표현할 수 있는 범위가 적다.

부동소수점 방식(floating point)

실수는 정수부, 소수부로 나눌수도 있지만

가수부와 지수부로 나누어 표현할 수도 있다. 부동소수점 방식에서는 이렇게 나누어 표현한다.

대부분의 시스템에서 이런 방식을 채택하고 있다.

C++에서는 요렇게.

 대부분 IEEE 표준을 따른다.

32비트 float형
64비트 double형

more

부동소수점 방식은 고정소수점 방식보다 훨씬 많은 범위까지 표현할 수 있긴 하지만 항상 오차가 존재한다는 단점을 가지고 있다.

위의 공식을 사용해서 표현하면, 표현 범위는 늘어나지만, 10진수를 정확하게 표현할 수 없으므로 오차가 발생할 수 있게 된다.

 

 

반응형

+ Recent posts