요는... 부동 소수점은 그야말로 floating point라는 거죠. fixed point를 하면 floating point를 유지하기 위한 overhead가 줄어들므로 precision을 좀 희생하면서 좀더 빠른 계산을 할 수 있다는 것이고...
그래서 arm과 같은 프로세서에서는 유용하게 사용할 수 있다는 거죠.
Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24
floating point... '부동'은 떠다니는 浮動 일겁니다. ^^
floating point... '부동'은 떠다니는 浮動 일겁니다. ^^;
부동소수점..
a X 10 ^ K
처럼, 가수와 지수로 나타내는 표현을 부동소수점 표현이라 합니다.
지수의 크기에 따라 가수의 소수점이 표현하는 자릿수가 일정치 않으므로, 떠다니는(부동) 소수점 표현이라 하는 것 같네요..
No Pain, No Gain.
arm 문서에 좋은 게 있습니다.
제가 최근에 했던 일과 관련되어서... 좋은 링크 하나 알려드리죠.
문서 가만가만 따라가보시면.. 어렵지 않게 익힐 수 있을 겁니다.
http://www.arm.com/support/567GAM/$File/DAI0033A_fixedpoint.pdf
요는... 부동 소수점은 그야말로 floating point라는 거죠. fixed point를 하면 floating point를 유지하기 위한 overhead가 줄어들므로 precision을 좀 희생하면서 좀더 빠른 계산을 할 수 있다는 것이고...
그래서 arm과 같은 프로세서에서는 유용하게 사용할 수 있다는 거죠.
floating point에 대해서도 arm에 좋은 문서가 있습니다.
http://www.arm.com/support/567KW7/$File/DAI0055A_fp-performance.pdf
fp는 대개 IEEE 표준을 따라서 구현되므로 어딜 가나 같습니다.
위에 많은 분들이 써 주신 대로, 부동소수점은 말그대로 소숫점이
위에 많은 분들이 써 주신 대로,
부동소수점은 말그대로 소숫점이 떠다닌다는 얘기입니다.
(floating point)
고정소수점은 소숫점이 고정되어 있다는 얘기입니다.
(fixed point)
즉, floating point는 값과 함께 소숫점의 위치까지 기록을 하고 있지만,
fixed point는 값 자체만 기록을 하고 있습니다.
뭐 정확한 예는 아니지만, 대충 이런식으로 작동을 합니다.
(지금 얘기하는 방법은 절!대!로!! 표준이 아닙니다)
예를 들어, 0x8000 8000 0000 0000 이라는 64비트 숫자가 있다고 칩시다.
그리고, 앞에 16비트는 지수, 뒤에 48비트는 base라고 합시다.
그리고, 지수 숫자는 0x8000을 기준선으로 잡는다고 생각합시다.
그러면, 이 값의 소수값은
1.8000 0000 0000 * 2^(0x8000 - 0x8000) = 1.5
즉, 64비트 aaaa bbbb bbbb bbbb
는
1.bbbb bbbb bbbb * 2^(0xaaaa - 0x8000) = (계산해 보세요-_-)
뭐 이런 식으로 표현하는 숫자가 floating point 입니다.
반대로 fixed point는
0xaaaa bbbb cccc dddd 라는 64비트를
aaaa bbbb . cccc dddd
이런식으로 표현하는 것이죠.
예를 들어, 32.75는
0x0000 0020 c000 0000
이 될 것입니다. 계산해 보세요.
Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24
댓글 달기