์ฝํ
์ธ :
์ด๋ฏธ์ง : http://pikabu.ru/
์๊ฐ
Java๋ฅผ ๋ฐฐ์ด ์ฒซ๋ ์ ์ ๋ ๋ถ๋ ์์์ ์ซ์์ ๊ฐ์ ํธ๊ธฐ์ฌ ๋ง์ ์ ํ์ ๊ธฐ๋ณธ ์์๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋๋ ์ฆ์ ๊ทธ ๊ธฐ๋ฅ์ ๊ด์ฌ์ ๊ฐ๊ฒ ๋์๊ณ , (์ํธ ์ฐ๊ฒฐ๋) ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ก ์์ฑ๋ ๋ฐฉ์์ ๋์ฑ ๊ด์ฌ์ด ์๊ฒผ์ต๋๋ค. ๋ชจ๋ ๋ฒ์์ ์ ์์ ๋ฌ๋ฆฌ ๋งค์ฐ ์์ ๋ฒ์(์: 1์์ 2๊น์ง)์์๋ ์ ์์ ์๋ ๋ฌดํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ์ ํํ๊ธฐ ๋๋ฌธ์ ์ด ์งํฉ์ ํํํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด์ง์๋ก ์ด๋ป๊ฒ ํํ๋๋ฉฐ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
์์, ์ํค ์ ์ค๋ช
๊ณผ
์ฌ๊ธฐ Habrรฉ์ ๋ํ ๋ค์ ๋ฉ์ง ๊ธฐ์ฌ๋ ๊ธฐ์ด๋ฅผ ๋ง๋ จํ์ง๋ง ์์ ํ ์ดํดํ์ง ๋ชปํ์ต๋๋ค.
์ด ๋ถ์๊ธ์ ์ฝ์ ๋ค์๋ ์์นจ ์์ผ ๊นจ๋ฌ์์ด ์์ต๋๋ค .
์ญ์ฌ ์์ผ๋ก์ ์ฌํ
(
Habrรฉ ๊ธฐ์ฌ ์์ ๋ฐ์ท ) ์ปดํจํฐ๊ฐ ํฌ๊ณ ํ๋ก๊ทธ๋จ์ด ์์๋ 60~70๋
๋์๋ ๋ถ๋ ์์์ ์ ์์ฒด๋ฅผ ํํํ๋ ํ์ค๋ฟ๋ง ์๋๋ผ ๊ณ์ฐ์ ๋ํ ๋จ์ผ ํ์ค๋ ์์ง ์์์ต๋๋ค. ๊ฐ ์ปดํจํฐ๋ ๋ค๋ฅด๊ฒ ์ํํ์ผ๋ฉฐ ๊ฐ๊ฐ ๊ณ ์ ํ ์ค๋ฅ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ 70๋
๋ ์ค๋ฐ์ ์ธํ
์ "ํฅ์๋" ์ฐ์ฐ์ ์ง์ํ๋ ์๋ก์ด ํ๋ก์ธ์๋ฅผ ๋ง๋ค๊ณ ๋์์ ์ด๋ฅผ ํ์คํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด William Kahan ๊ต์์ John Palmer(์๋, ๋งฅ์ฃผ์ ๊ดํ ์ฑ
์ ์ ์๋ ์๋) ๊ต์๊ฐ ์ฐธ์ฌํ์ต๋๋ค. ์ฝ๊ฐ์ ๋๋ผ๋ง๊ฐ ์์์ง๋ง ์๋ก์ด ํ์ค์ด ๊ฐ๋ฐ๋์์ต๋๋ค. ์ด์ ์ด ํ์ค์ IEEE754๋ผ๊ณ ํฉ๋๋ค.
๋ถ๋ ์์์ ์ซ์ ํ์
ํ๊ต ๊ต๊ณผ์์์๋ ๋ชจ๋ ์ฌ๋์
1.2 ร 10 3 ๋๋
1.2 E3 ํ์ (1.2 ร 1000 = 1200 ) ๊ณผ ๊ฐ์ ๋งค์ฐ ํฌ๊ฑฐ๋ ๋งค์ฐ ์์ ์ซ์๋ฅผ ์ฐ๋ ํน์ดํ ๋ฐฉ๋ฒ์ ์ง๋ฉดํ์ต๋๋ค . ์ด๋ฅผ ์ง์ ํ๊ธฐ๋ฒ์ด๋ผ๊ณ ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ N=Mรn p ๊ณต์์ ์ฌ์ฉํ์ฌ ์ซ์ ํํ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค .
- N = 1200 - ๊ฒฐ๊ณผ ์ซ์
- M = 1,2 - ๊ฐ์ - ์์๋ฅผ ๊ณ ๋ คํ์ง ์์ ๋ถ์ ๋ถ๋ถ
- n = 10์ด ์์์ ๊ธฐ๋ณธ์
๋๋ค. ์ด ๊ฒฝ์ฐ ์ปดํจํฐ์ ๋ํด ์ด์ผ๊ธฐํ์ง ์์ ๋ ๊ธฐ๋ณธ์ ์ซ์ 10์
๋๋ค.
- p = 3 - ๋ฐ๋ฉด์ ์ ๋
์ข
์ข
์์์ ๋ฐ์ 10 ์ผ๋ก ๊ฐ์
ํ๊ณ ๊ฐ์์ ๋ฐ์ ๊ฐ๋ง ๋ฌธ์
E ๋ก ๊ตฌ๋ถํ์ฌ ๊ธฐ๋กํฉ๋๋ค. ์ด ์์์๋
1.2 ร 10 3 ๋ฐ
1.2 E3 ์ ํด๋นํ๋ ํญ๋ชฉ์ ์ ๊ณต ํ์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ๋ช
ํํ๊ณ ํ๊ต ์ปค๋ฆฌํ๋ผ์ ๋ํ ํฅ์ ์ด๋ฆฐ ์ฌํ์ ๋ง์ณค๋ค๋ฉด ์ด์ ์ด๊ฒ์ ์๋ ๊ฒ์ด ์ข์ต๋๋ค. 10์ด ์๋ 2์ ๊ฑฐ๋ญ์ ๊ณฑ, ์ฆ
n = 2 ์ด๋ฉด ์ ์ฒด ์กฐํ ๊ณต์
1.2E3์ด ๋ฌด๋์ง๊ณ ์ ๋ง ๋ด ๋จธ๋ฆฌ๊ฐ ์ํ ์ต๋๋ค.
๋ถํธ์ ํ์
๊ทธ๋ผ ์ฐ๋ฆฌ๋ ๋ฌด์์ ๊ฐ์ง๊ณ ์์ต๋๊น? ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ๊ฐ์
( ์ฐ๋ฆฌ๊ฐ ๊ฑฐ๋ญ์ ๊ณฑํ ๋ถ๋ถ๊ณผ ๊ฑฐ๋ญ์ ๊ณฑ ์์ฒด)๋ก ๊ตฌ์ฑ๋ ์ด์ง์๋ ๊ฐ๊ฒ ๋ฉ๋๋ค. ๋ํ ์ ์ ์ ํ์์ ํํ ๋ณผ ์ ์๋ฏ์ด ๋ถ๋ ์์์ ์ซ์์๋ ๋ถํธ(์ซ์๊ฐ ์์์ธ์ง ์์์ธ์ง)๋ฅผ ๊ฒฐ์ ํ๋ ๋นํธ๊ฐ ์์ต๋๋ค.
float
์๋ฅผ ๋ค์ด, 32๋นํธ๋ก ๊ตฌ์ฑ๋ ์ ํ์ ๊ณ ๋ คํด๋ณผ ๊ฒ์ ์ ์ํฉ๋๋ค . ๋ฐฐ์ ๋ฐ๋ ์ซ์์ ๊ฒฝ์ฐ
double
๋
ผ๋ฆฌ๋ ๋์ผํ๋ฉฐ ๋นํธ ์๊ฐ ๋ ๋ฐฐ๋ง ์์ต๋๋ค. 32๋นํธ ์ค ์ฒซ ๋ฒ์งธ ์ต์์ ๋นํธ๋ ๋ถํธ์ ํ ๋น๋๊ณ ๋ค์ 8๋นํธ๋ ์ง์(๊ฐ์๋ฅผ ์ฌ๋ฆด ๊ฑฐ๋ญ์ ๊ณฑ)์ ํ ๋น๋๊ณ ๋๋จธ์ง 23๋นํธ๋ ๊ฐ์์ ํ ๋น๋ฉ๋๋ค. ์ค๋ช
ํ๊ธฐ ์ํด ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๋นํธ๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋นํธ์ ๊ฐ์ด
0 ์ด๋ฉด ์ฐ๋ฆฌ๊ฐ ์ป๋ ์ซ์๋
์์ ์
๋๋ค . ๋นํธ๊ฐ
1 ์ด๋ฉด ์ซ์๋ ์์๊ฐ ๋ฉ๋๋ค . 8๋นํธ์ ๋ค์ ๋ธ๋ก์ ์ง์ ๋ธ๋ก์ด๋ค. ์ง์๋ ์ผ๋ฐ์ ์ธ
8๋นํธ ์ซ์๋ก ์์ฑ๋๋ฉฐ ํ์ํ ์ฐจ์๋ฅผ ์ป์ผ๋ ค๋ฉด ๊ฒฐ๊ณผ ์ซ์์์
127์ ๋นผ์ผ ํฉ๋๋ค . ์ด ๊ฒฝ์ฐ ์ง์์ 8๋นํธ๋
10000001 ์
๋๋ค . ์ด๋ ์ซ์
129 ์ ํด๋นํฉ๋๋ค . ์ด๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ ๊ทธ๋ฆผ์ ๋น ๋ฅธ ๋ต๋ณ์ด ๋์ ์์ต๋๋ค. ํ์ฅ๋ ๋ฒ์ ์ ๋ชจ๋ ๋ถ์ธ ๋์ํ ๊ณผ์ ์์ ์ป์ ์ ์์ต๋๋ค.
1ร2 7 + 0ร2 6 + 0ร2 5 + 0ร2 4 + 0ร2 3 + 0ร2 2 + 0ร2 1 + 1ร2 0 = 1ร128 + 1ร1 = 128+ 1=129 ์ด 8๋นํธ์์ ์ป์ ์ ์๋ ์ต๋ ์๋
11111111 2 = 255 10 ์ด๋ผ๊ณ ๊ณ์ฐํ๋ ๊ฒ์ ์ด๋ ต์ง ์์ต๋๋ค. (์๋ ์ฒจ์
2 ์
10 ์ ์ด์ง์์ ์ญ์ง์ ์ฒด๊ณ๋ฅผ ์๋ฏธํฉ๋๋ค.) ๊ทธ๋ฌ๋ ์์ ์ง์ ๊ฐ๋ง ์ฌ์ฉํ๋ค๋ฉด (
0 ~ 255 ), ๊ฒฐ๊ณผ ์ซ์๋ ์์์ ์ด์ ์ ๋ง์ ์ซ์๋ฅผ ๊ฐ์ง์ง๋ง ์ดํ์๋ ๊ทธ๋ ์ง ์์ต๋๊น? ์์ ๊ฐ์ ์ป์ผ๋ ค๋ฉด ์์ฑ๋ ์ง์์์
127์ ๋นผ์ผ ํฉ๋๋ค . ๋ฐ๋ผ์ ๊ฐ๋ ๋ฒ์๋
-127 ~ 128 ์
๋๋ค .
์ฐ๋ฆฌ์ ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ์ฐจ์๋ 129-127 = 2 ์
๋๋ค . ์ง๊ธ์ ์ด ์ซ์๋ฅผ ๊ธฐ์ตํด ๋์.
๊ฐ์
์ด์ ๊ฐ์์ ๋ํด. 23๋นํธ๋ก ๊ตฌ์ฑ๋์ง๋ง ์ฒ์์๋ ํญ์ ๋นํธ๊ฐ ํ ๋น๋์ง ์์ ๋ ๋ค๋ฅธ ๋จ์๊ฐ ์์๋ฉ๋๋ค. ์ด๋ ํธ์์ฑ๊ณผ ๊ฒฝ์ ์ฑ์ ์ด์ ๋ก ์ํ๋ฉ๋๋ค. ์์์ ์์ด๋ ๋ค์ ๊ฐ์์ 0์ ์ถ๊ฐํ๋ฉด ๋์ผํ ์ซ์๋ฅผ ๋ค๋ฅธ ๊ฑฐ๋ญ์ ๊ณฑ์ผ๋ก ํํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ดํดํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ์์ ์ง์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค:
120,000 = 1.2ร10 5 = 0.12ร10 6 = 0.012ร10 7 = 0.0012ร10 8 ๋ฑ. ํ์ง๋ง ๊ฐ์๋จธ๋ฆฌ์ ๊ณ ์ ๋ ์ซ์๋ฅผ ์
๋ ฅํ๋ฉด ๋งค๋ฒ ์๋ก์ด ์ซ์๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. 23๋นํธ ์ด์ ์ ํ๋์ ํจ๊ป ํ๋๊ฐ ๋ ์์ ๊ฒ์ด๋ผ๋ ๊ฒ์ ๋น์ฐํ๊ฒ ์๊ฐํฉ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ๋นํธ๋ ์ ์ผ๋ก ๋๋จธ์ง ๋นํธ์ ๊ตฌ๋ถ๋์ง๋ง ์ด๋ ์๋ฌด ์๋ฏธ๋ ์์ต๋๋ค. 1. ๊ทธ๊ฒ ๋ ํธํด์. 111000000000000000000000
์ด์ ๊ฒฐ๊ณผ ๊ฐ์๋ฅผ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฑฐ๋ญ์ ๊ณฑํ์ฌ ๊ฐ ๋จ๊ณ๋ง๋ค ๊ฑฐ๋ญ์ ๊ณฑ์ ์ค์ฌ์ผ ํฉ๋๋ค. ๊ณ์ฐ ๊ฒฐ๊ณผ ์ป์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๊ฐ, ์ฆ
2 ๋ถํฐ ์์ ํฉ๋๋ค(2์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๊ฐ ๊ฐ์ ์ฐ์ง ์๊ธฐ ์ํด ์๋์ ์ผ๋ก ๊ฐ๋จํ ์๋ฅผ ์ ํํ์ผ๋ฉฐ, ํด๋น ๋นํธ๋ 0์)
1ร2 2 + 1ร2 1 + 1ร2 0 + 1ร2 -1 = 1ร4 + 1ร2 + 1ร1 + 1ร0.5 = 4+2+1+0.5 = 7.5 ๊ฒฐ๊ณผ
7.5 ๋ฅผ ์ป์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด ๋งํฌ ์์ ์ ํ์ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ
ํ์ค ๋ถ๋ ์์์ ์ซ์๋
float
32๋นํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋นํธ๋ ๋ถํธ(+ ๋๋ -)์ด๊ณ , ๋ค์ 8๊ฐ๋ ์ง์, ๋ค์ 23๊ฐ๋ ๊ฐ์์
๋๋ค. ๋ถํธ์ ๋ฐ๋ผ - ๋นํธ 0์ด ์์์ธ ๊ฒฝ์ฐ. ๋นํธ 1์ด ์์์ธ ๊ฒฝ์ฐ.
์ง์๋ฒ์ผ๋ก ๋นํธ ๋จ์๋ฅผ 10์ง์๋ก ๋ณํํฉ๋๋ค(์ผ์ชฝ์์ ์ฒซ ๋ฒ์งธ ๋นํธ๋
128 , ๋ ๋ฒ์งธ ๋นํธ๋
64 , ์ธ ๋ฒ์งธ ๋นํธ๋
32 , ๋ค ๋ฒ์งธ ๋นํธ๋
16 , ๋ค์ฏ ๋ฒ์งธ ๋นํธ๋
8 , ์ฌ์ฏ ๋ฒ์งธ ๋นํธ๋
4 , ์ผ๊ณฑ ๋ฒ์งธ ๋นํธ๋
2 , ์ฌ๋ ๋ฒ์งธ๋
1 ) ๊ฒฐ๊ณผ ์ซ์์์
127์ ๋นผ๋ฉด ์์ํ ์ ๋๋ฅผ ์ป์ต๋๋ค.
๊ฐ์์ ๋ฐ๋ฅด๋ฉด ์์ ์๋ ๊ธฐ์กด 23๋นํธ์ ๊ฐ 1์ ๊ฐ๋ ๋ ๋ค๋ฅธ ๋นํธ๋ฅผ ์ถ๊ฐํ๊ณ ๊ทธ๋ก๋ถํฐ ์ฐ๋ฆฌ๊ฐ ๋ฐ์ ์ ๋ ฅ์ ๋์ด๊ธฐ ์์ํ์ฌ ๊ฐ ํ์ ๋นํธ์์ ์ด ์ ๋ ฅ์ ๊ฐ์์ํต๋๋ค.
๊ทธ๊ฒ ๋ค์ผ, ์๋ค์! ์ถ์ : ์์ ๋ก ์ด ๊ธฐ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ ์์์ ์ซ์๋ฅผ ์ฌ์ฉํ ๋ค์์ ์ฐ์ ์ฐ์ฐ์์ ์ ๋ฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ด์ ์ ๋ํ ๋ฒ์ ์ ๋๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์.
GO TO FULL VERSION