- intํ ๋ณ์์ doubleํ ๋ณ์๋ฅผ ๋ฃ์ผ๋ฉด ๋ฐ์ดํฐ ์์ค์ด ์์ ์ ์์.
ex)
#include <stdio.h>
int main() {
int a;
double b;
b = 2.4;
a = b;
printf("%d", a);
return 0;
}
| ์ปดํจํฐ๊ฐ ์ค์๋ฅผ ํํํ๋ ์๋ฆฌ |
์ปดํจํฐ์ ์ค์ ํํ์ ๋ํ์ ์ธ ๋ ๊ฐ์ง ๋ฐฉ์
1. ์์์ (Fixed Point) ๋ฐฉ์
2. ๋ถ๋ ์์์ (Floating Point) ๋ฐฉ์ : ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ์ปดํจํฐ๋ 99.9% ๋ถ๋ ์์์ ๋ฐฉ์์ ์ฌ์ฉ
โต๊ณ ์ ์์์ ๋ฐฉ์๊ณผ ๋น๊ตํ์ ๋ ๊ฐ์ ์์ ๋นํธ๋ง ์ฌ์ฉํด์ ํํํ ์ ์๋ ์์ ๋ฒ์๊ฐ ๋ ๋๊ธฐ ๋๋ฌธ
โ๋ฒ์๊ฐ ๋๋ค : ํํํ ์ ์๋ ๊ฐ์ฅ ์์ ์์ ๊ฐ์ฅ ํฐ ์์ ์ฐจ์ด๊ฐ ๋ ํฌ๋ค
- ๋์ ๋ถ๋ ์์์ ๋ฐฉ์์ ๊ณ ์ ์์์ ๋ฐฉ์์ ๋นํด์ ์ ๋ฐ๋๊ฐ ๋จ์ด์ง
| IEEE 754 |
โ ๊ตญ ์ ์ ๊ธฐ์ ์๊ธฐ์ ์ํํ(IEEE) ์์ 1985๋
์ ํ์คํํ ๋ถ๋ ์์์ ๋ฐฉ์์ ํตํด ์๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ
- ์ปดํจํฐ ์์์ ์์ ํํ ํ๋ ๋ฒ :
±f×bแต
* f : ๊ฐ์, b : ๋ฐ, e : ์ง์
์ปดํจํฐ ์์์๋ ์ด์ง์ฒด๊ณ๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ b = 2 ๋ก ๊ณ ์
๋ฐ๋ผ์, ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ ๋ f, e ์ ๊ฐ๋ง ์ ์ฅํ๋ฉด ๋จ. ๊ทธ๋ฆฌ๊ณ ๋งจ ์์ ๋ถํธ ๋นํธ๋ฅผ ์ํด์ 1 ๋นํธ ๋ ์ฐ๊ฒ ๋จ.
IEEE 754 ์์ ์ ์ํ ๋ถ๋ ์์์ ํํ
| ์์์ 10 ์ง๋ฒ - 2 ์ง๋ฒ ์ง๋ฒ ๋ณํ |
[2์ง๋ฒ → 10์ง๋ฒ]
ex) 10010.1011โ = 1 8 . 6 8 7 5
1 X 2โด + 0 X 2³ + 0 X 2² + 1 X 2¹ + 0 X 2โฐ + 1 X 2โป¹ + 0 X 2โป² + 1 X 2โป³ + 1 X 2โปโด
= 1 8 + 0 . 5 + 0 . 1 2 5 + 0 . 0 6 2 5
= 1 8 . 6 8 7 5
[10์ง๋ฒ → 2์ง๋ฒ]
ex) − 1 1 8 . 6 2 5
= − 1 1 1 0 1 1 0โ − 0 . 6 2 5
= − 1 1 1 0 1 1 0โ − 2โป¹ − 2โป³
= − 1 1 1 0 1 1 0 . 1 0 1โ
2 ์ง๋ฒ ์ผ๋ก ํ์๋ ๋ชจ๋ ์์๋ค์ ๋ชจ๋ ์ญ์ง๋ฒ์ผ๋ก ๋ณํ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ชจ๋ 10 ์ง๋ฒ์ผ๋ก ํํ๋ ์๋ 2 ์ง๋ฒ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
์ปดํจํฐ๋ ์ด๋ ๊ฒ ๋ฌดํํ ๊ธธ๊ฒ ๋ํ๋๋ ๋ฌดํ ์์๋ค์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ๋ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ์ ๋ถ๋ถ๋ง ์๋ผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด๊ดํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํ์ฐ์ ์ผ๋ก ์ค์ฐจ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
โ | IEEE 754 ๋ฐฉ์์ผ๋ก ์์ ์ ์ฅํ๊ธฐ |
โป ๋ฐ์ด์ด์ค ์ฒ๋ฆฌ ์ด์ : ์ง์๊ฐ ์ธ์ ๋ ์์๊ฐ ์๋๊ธฐ ๋๋ฌธ
ex) 0.625 ๋ ์ด์ง์๋ก 0.101 ์ธ๋ฐ ์ ๊ทํ ์, ์ผ์ชฝ์ผ๋ก ์ฌํํธ๊ฐ 1 ๋ฒ ์ด๋ฏ๋ก ์ง์๊ฐ ์์(-1) ๊ฐ ๋จ - ๋ฌด์กฐ๊ฑด ์์๋ก ๊ฐ์ ์ง์ด๋ฃ๋ ๊ฒ์ด ์ปดํจํฐ ์
์ฅ์์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๊ธฐ๊ฐ ์์ํ๊ธฐ ๋๋ฌธ์
์ ์ ํํํ๋ฏ์ด 2 ์ ๋ณด์ํํ๋ฒ์ผ๋ก ์ง์๋ฅผ ๋ํ๋ด์ง ์์.
↓
์ฆ, -118.625๋ ์ปดํจํฐ์ 11000010111011010100000000000000โ ๋ก ์ ์ฅ ๋จ
์ ์์ ์ด์ง ์๋ ์๋ฅผ ํํํ๊ธฐ ์ํด์ IEEE 754 ์์ ์ ํ ๊ท์น
[๋น์ ์ ์ (Denormalized number)]
- ๋น์ ์ ์์ ๊ฒฝ์ฐ 2โป¹ ²โท ๋ณด๋ค๋ ์์์ ์ง์ ๋ถ๋ถ์ ๋ฐ์ด์ด์ค ์ฒ๋ฆฌ๋ฅผ ํด๋ 1 ์ด์์ด ๋์ง ์๋ ์๋ค
=> 1.(๊ฐ์ ๋ถ๋ถ) X 2โป¹ ²โท ์ ํํ๋ก ํํํ ์ ์์. ๋์ , 0.(๊ฐ์ ๋ถ๋ถ) X 2โป¹ ²โท ์ ํํ๋ก ํด์
[๋ฌดํ๋]
- ๋ถํธ ๋นํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ IEEE 754 ๋ฐฉ์์ผ๋ก ์์ ๋ฌดํ๋์ ์์ ๋ฌดํ๋๋ฅผ ํํํ ์ ์์.
- ๋ฌดํ๋๋ ์ฐ์ฐ ๊ณผ์ ์์ ํํํ ์ ์๋ ๊ฐ์ฅ ํฐ ์ ๋ณด๋ค ๋ ํฐ ๊ฐ์ด ๋ค์ด๊ฐ๋ค๋ฉด ์๋์ผ๋ก ๋ฐ์ํจ
[ ์๊ฐ ์๋ (NaN )]
- ์๋ฐํ ๊ฐ์ ์ ํ ์ ์๋ ์ฐ์ฐ ์ค์ ๋ฐ์ ex ) ∞ - ∞, -∞ + ∞, 0 × ∞, 0 ÷ 0, ∞ ÷ ∞ ๋ฑ
โ | ํ ๋ณํ (์บ์คํ
) |
(๋ฐ๊พธ๋ ค๋ ํ) ๋ณ์ ์ด๋ฆ
- ํ์ ๋ฐ๊พผ๋ค๋ ๊ฒ์ ์๊ตฌ์ ์ผ๋ก ๋ฐ๋๋ ๊ฒ์ด ์๋.
- double ์ธ ๋ณ์ ๋ฅผ int ๋ก ์บ์คํ
ํ๋ค๊ณ ํด๋ int ์ธ ๋ณ์๊ฐ ๋๋ ๊ฒ์ด ์๋๋ผ
๊ณ์ฐ์์์ ์ผ์์ ์ผ๋ก int ํ ๋ณ์๋ก ๋ฐ๊พผ ํ ์๊ฐํ๋ผ๋ ๊ฒ
https://modoocode.com/17
์น์ด ๋จน๋ C ์ธ์ด - <10. ์ฐ์์ธ ์บ์คํ
(?) (C ์ธ์ด์์์ ํ ๋ณํ)>
modoocode.com