MCP๋กœ ์—ฐ๊ฒฐ โ†’

๊ณ„์‚ฐ ์ž…๋ ฅ

16์ง„์ˆ˜ 8์ž๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”(์˜ˆ: ฯ€๋Š” 40490FDB). "0x" ์ ‘๋‘์‚ฌ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๊ณต์‹

๊ด‘๊ณ 

๊ฒฐ๊ณผ

10์ง„์ˆ˜ ๊ฐ’
3.1415927410125732
IEEE 754 ๋‹จ์ •๋ฐ€๋„ (32๋น„ํŠธ)
๋ถ€ํ˜ธ ๋น„ํŠธ 0 (positive)
์ €์žฅ๋œ ์ง€์ˆ˜ 128
๋ฐ”์ด์–ด์Šค๋ฅผ ๋บ€ ์ง€์ˆ˜ 1
๊ฐ€์ˆ˜ (์›์‹œ ๋น„ํŠธ) 4,788,187
๊ฐ€์ˆ˜ ์†Œ์ˆ˜๋ถ€ 0.5707963705062866

IEEE 754 ๋ถ€๋™์†Œ์ˆ˜์  ๋ณ€ํ™˜๊ธฐ๋ž€?

์ด ๋„๊ตฌ๋Š” 32๋น„ํŠธ 16์ง„์ˆ˜ ๊ฐ’์„ IEEE 754 ๋‹จ์ •๋ฐ€๋„(single-precision) ํ‘œ์ค€์— ๋”ฐ๋ผ ์‹ค์ œ ์ˆซ์ž๋กœ ๋””์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. IEEE 754๋Š” C, Java๋ฅผ ๋น„๋กฏํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ํ•˜๋“œ์›จ์–ด์—์„œ float ํƒ€์ž…์— ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹์ด์ฃ . 16์ง„์ˆ˜ 8์ž๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ์ด ๊ฐ’์„ float๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ํ•„๋“œ, ์ฆ‰ ๋ถ€ํ˜ธ ๋น„ํŠธ 1๊ฐœ, ์ง€์ˆ˜ ๋น„ํŠธ 8๊ฐœ, ๊ฐ€์ˆ˜(์†Œ์ˆ˜๋ถ€) ๋น„ํŠธ 23๊ฐœ๋กœ ๋‚˜๋ˆˆ ๋’ค ๋‹ค์‹œ 10์ง„์ˆ˜ ๊ฐ’์œผ๋กœ ์กฐํ•ฉํ•ด ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

32๋น„ํŠธ ๊ฐ’์„ 16์ง„์ˆ˜๋กœ ์ž…๋ ฅํ•˜์„ธ์š”(์˜ˆ: 40490FDB). "0x" ์ ‘๋‘์‚ฌ๋Š” ๋ถ™์ด์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, 16์ง„์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋Š” ์ž๋™์œผ๋กœ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. 8์ž๋ฆฌ๋ณด๋‹ค ์งง์œผ๋ฉด ์™ผ์ชฝ์ด 0์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์—๋Š” 10์ง„์ˆ˜ ๊ฐ’๊ณผ ํ•จ๊ป˜ ๋””์ฝ”๋”ฉ๋œ ๋ถ€ํ˜ธ, ์ €์žฅ๋œ ์ง€์ˆ˜, ๋ฐ”์ด์–ด์Šค๋ฅผ ๋บ€ ์ง€์ˆ˜, ๊ฐ€์ˆ˜๊ฐ€ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ๋น„ํŠธ ๋ฐฐ์น˜๋ฅผ ์ง์ ‘ ๊ฒ€์ฆํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต์‹ ์„ค๋ช…

์ •๊ทœํ™”๋œ ์ˆ˜(normal number)์˜ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

$$\text{Value} = (-1)^{s} \times \left(1 + \frac{m}{2^{23}}\right) \times 2^{(e - 127)}$$

์—ฌ๊ธฐ์„œ 127์€ ๋‹จ์ •๋ฐ€๋„์˜ ์ง€์ˆ˜ ๋ฐ”์ด์–ด์Šค(bias)์ž…๋‹ˆ๋‹ค. "1 +" ๋ถ€๋ถ„์€ ์ •๊ทœํ™”๋œ ์ด์ง„์ˆ˜๊ฐ€ ํ•ญ์ƒ ๊ฐ€์ง€๋Š” ์•”๋ฌต์  ์„ ํ–‰ ๋น„ํŠธ(implicit leading bit)๋ฅผ ๋ฐ˜์˜ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €์žฅ๋œ ์ง€์ˆ˜ \(e\)๊ฐ€ 0์ด๋ฉด ๋น„์ •๊ทœ์ˆ˜(subnormal)๋กœ, ์•”๋ฌต์  ์„ ํ–‰ 1์ด ์‚ฌ๋ผ์ง€๊ณ  ์ง€์ˆ˜๋Š” -126์œผ๋กœ ๊ณ ์ •๋ฉ๋‹ˆ๋‹ค. \(e\)๊ฐ€ 255์ด๋ฉด ๊ฐ€์ˆ˜๊ฐ€ 0์ผ ๋•Œ๋Š” ๋ฌดํ•œ๋Œ€(infinity), 0์ด ์•„๋‹ ๋•Œ๋Š” NaN์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋ถ€ํ˜ธยท์ง€์ˆ˜ยท๊ฐ€์ˆ˜ ํ•„๋“œ๋กœ ๋‚˜๋‰œ 32๋น„ํŠธ IEEE 754 ๋‹จ์ •๋ฐ€๋„ ๋ ˆ์ด์•„์›ƒ
32๋น„ํŠธ๋Š” ๋ถ€ํ˜ธ 1๋น„ํŠธ, ์ง€์ˆ˜ 8๋น„ํŠธ, ๊ฐ€์ˆ˜ 23๋น„ํŠธ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ ํ’€์ด

40490FDB๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ง„์ˆ˜๋กœ ๋ณด๋ฉด ๋ถ€ํ˜ธ๋Š” 0(์–‘์ˆ˜)์ด๊ณ , ์ง€์ˆ˜ ํ•„๋“œ๋Š” 10000000 = 128์ด๋ฏ€๋กœ ๋ฐ”์ด์–ด์Šค๋ฅผ ๋บ€ ์ง€์ˆ˜๋Š” \(128 - 127 = 1\)์ž…๋‹ˆ๋‹ค. ๊ฐ€์ˆ˜ ๋น„ํŠธ๋Š” 4788187์ด๋ฏ€๋กœ ์†Œ์ˆ˜๋ถ€๋Š” \(4788187/8388608 \approx 0.5707964\)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ’์€ \((1 + 0.5707964) \times 2^{1} \approx 3.14159274\)๋กœ, ๋‹จ์ •๋ฐ€๋„๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ฯ€์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ทผ์‚ฟ๊ฐ’์ž…๋‹ˆ๋‹ค.

๋ถ€ํ˜ธยท์ง€์ˆ˜ยท๊ฐ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ ์กฐํ•ฉํ•˜๋Š” IEEE 754 ์ˆ˜์‹์„ ๋ณด์—ฌ์ฃผ๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ
๊ฐ ํ•„๋“œ๋Š” ์ˆ˜์‹์— ์ž…๋ ฅ๋˜์–ด 10์ง„์ˆ˜ ๊ฐ’์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

์™œ ๊ฒฐ๊ณผ๊ฐ€ ์ œ๊ฐ€ ์˜ˆ์ƒํ•œ ๊ฐ’๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜์ง€ ์•Š๋‚˜์š”? ๋‹จ์ •๋ฐ€๋„๋Š” ์•ฝ 7์ž๋ฆฌ์˜ 10์ง„ ์ •๋ฐ€๋„๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋งŽ์€ 10์ง„์ˆ˜ ๊ฐ’์ด ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด float ๊ฐ’์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผ๋ฉ๋‹ˆ๋‹ค.

๋ฐฐ์ •๋ฐ€๋„(64๋น„ํŠธ)๋Š” ์–ด๋–ค๊ฐ€์š”? ์ด ๋„๊ตฌ๋Š” 32๋น„ํŠธ ๋‹จ์ •๋ฐ€๋„๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์ •๋ฐ€๋„(double)๋Š” ์ง€์ˆ˜ 11๋น„ํŠธ, ๊ฐ€์ˆ˜ 52๋น„ํŠธ, ๋ฐ”์ด์–ด์Šค 1023์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

7FC00000์€ ์–ด๋–ค ๊ฐ’์ธ๊ฐ€์š”? ์ด๋Š” NaN(์ง€์ˆ˜๊ฐ€ ๋ชจ๋‘ 1, ๊ฐ€์ˆ˜๊ฐ€ 0์ด ์•„๋‹˜)์œผ๋กœ, ์œ ํ•œํ•œ ์ˆซ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ตœ์ข… ์—…๋ฐ์ดํŠธ: