๊ณ ์ ์์์ ๊ณผ ๋ถ๋ ์์์
์ ์๋ฅผ 2์ง์๋ก ๋ณํ
2๋ฅผ ๋๋ ๋๋จธ์ง๋ฅผ ์ญ์์ผ๋ก ์ฝ์
์ค์๋ฅผ 2์ง์๋ก ๋ณํ
์ค์๋ถ๋ ์ ์๋ถ์ฒ๋ผ ์ฒ๋ฆฌํ ๋
๋ฌธ์ : ์ค๋ณต ๋ฐ์
1.9 -> 1.1001
1.41 -> 1.100 1
ํด๊ฒฐ : 2๋ฅผ ๊ณฑํ๋ฉด์ ์ ์ (1, 0)์ ๋ฝ์๋
์ค์ 0.625 --> ์ด์ง์ 0.101
0.625 * 2 = 1.25 -> ์ ์ 1 ๋ฝ๊ธฐ, ๋๋จธ์ง 0.25
0.25 * 2 = 0.5 -> ์ ์ 0 ๋ฝ๊ธฐ, ๋๋จธ์ง 0.5
0.5 * 2 = 1.0 -> ์ ์ 1 ๋ฝ๊ธฐ, ๋๋จธ์ง 0์ด ๋์ค๋ฉด ์ข ๋ฃ, ๋ฝ์ ์ซ์๋ฅผ ์์๋๋ก ์ฝ์ด์ค
๊ณ ์ ์์์ (Fixed Point)
32๋นํธ ์ค์๋ฅผ ๊ณ ์ ์์์ ๋ฐฉ์์ผ๋ก ํํํ ๊ฒฝ์ฐ
์ค์ 7.625 --> 2์ง์ 111.101
16๋นํธ ์ฒด๊ณ๋ฅผ ์ด๋ค๊ณ ๊ฐ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ถํธ ๋นํธ : ์ซ์ ์์ฒด๊ฐ ์์๋ฉด 0, ์์๋ฉด 1
์์๋ถ : ๋จ๋ ์๋ฆฌ๋ 0 (์์์ ์ ์์น๋ ๋ฏธ๋ฆฌ ์ ํด๋ )
์ฅ๋จ์
๊ตฌํํ๊ธฐ ํธ๋ฆฌ
ํํ ๊ฐ๋ฅํ ์์ ๋ฒ์ ๋ฎ์. ํ์ ์
๋์ ์ ๋ฐ๋๊ฐ ํ์์๋ ์์คํ ์ ์ฌ์ฉ
๋ถ๋์์์ (Floating Point)
- ์ ๊ทํ (Normalization)
- IEEE ํ์ค์ ๋ฐ๋ฅธ bias๋ฅผ ์ง์๋ถ์ ๋ํ๊ธฐ (์ง์ ๋ ์ซ์๋ฅผ ๋ํ์ฌ ์ง์๋ถ์ ์์ ํํ)
1. ์ ๊ทํ
ํ์ : 1.xxxx... * 2^n
์ ์๋ถ์ 1์ด ์๋ ๊ฒฝ์ฐ: ์์์ ์ ์ผ์ชฝ์ผ๋ก ์ด๋
์ ์๋ถ๊ฐ 0์ผ ๊ฒฝ์ฐ : 1๋ง ๋จ์ ๋๊น์ง ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
n ์๋ฆฌ๋ ์์์ ์ ์ด๋ํ ์นธ ์
์ค์ 7.625๋ฅผ 2์ง์๋ก ๋ณํ --> 111.101
111.101์ ์ ๊ทํ --> 1.11101 * 2^2 (์์์ 2์นธ ์ด๋ํ์ผ๋ฏ๋ก n์ 2)
2. IEEE 754
ํ์ฌ ์ฌ์ฉ๋๊ณ ์๋ ๋ถ๋ ์์์ ๋ฐฉ์์ ๋๋ถ๋ถ IEEE 754 ํ์ค์ ๋ฐ๋ฅด๊ณ ์์
์ง์๋ถ๋ bias๋ผ๋ ์ง์ ๋ ์ซ์๋ฅผ ๋ํ ๋ค์ ์ถ๊ฐ
์ ๊ทํํ 1.11101 * 2^2
๋ถํธ ๋นํธ : ์ ์ฒด ์ซ์์ ์์ (0์ด๋ฉด ์์, 1์ด๋ฉด ์์)
์ง์๋ถ : 2
๊ฐ์๋ถ : 11101 (๋จ๋ ์๋ฆฌ๋ 0)
bias : IEEE ํ์ค์์ 32๋นํธ๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ 127 ๊ท์
๋ฐ๋ผ์ ์ง์๋ถ : 2 + 127 = 129 --> 2์ง์ 10000001 (8๋นํธ)
bias ์ฌ์ฉํ๋ ์ด์
์ง์๊ฐ ์์์ธ ๊ฒฝ์ฐ
2์ง์ 0.000101 --> ์ ๊ทํ 1.01 * 2^-4
์ง์๋ถ -4๋ฅผ ๊ทธ๋๋ก ์ ์ฅํ๊ธฐ ๊ณค๋
32๋นํธ ์ค์์ผ ๊ฒฝ์ฐ bias 127๋ฅผ ๋ํ์ฌ ์ง์๋ถ์ 0~127 ๊ตฌ๊ฐ์ ์์, 128~255 ๊ตฌ๊ฐ์ ์์๋ฅผ ํํ
์ง์๋ถ๊ฐ 2^11 ์ฆ 2048๊ฐ์ ์๋ฅผ ํํ
bias๋ 1023
์ง์๋ถ์ 0~1023 ๊ตฌ๊ฐ์ ์์, 1024~2047 ๊ตฌ๊ฐ์ ์์
์ฅ๋จ์
๊ณ ์ ์์์ ๋ณด๋ค ๊ณผ์ ์ด ๋ณต์ก
๋นํธ ์ ๋๋น ํํ ๊ฐ๋ฅํ ์์ ๋ฒ์๊ฐ ๋์
ํ ๋๋ถ๋ถ์ ์ปดํจํฐ ์์คํ ์์ ์ค์๋ฅผ ํํํ ๋ ๋ถ๋์์์ ์ฌ์ฉ
์ถ์ฒ
https://gsmesie692.tistory.com/94 [ํ์๋น ๋ณํ๋: Reb∞t]
https://tcpschool.com/cpp/cpp_datatype_floatingPointNumber [TCP]