Float 자료형에 대해서 1
ex ) $$ 0.111111111..._2 = 1.0 $$
float 자료형은
sign bit를 나타내는 S
exponential을 나타내는 exp
fractional value를 나타내는 frac 부분으로 나눌 수 있다
Normalized value
exp != 0 || exp != 11111111...1
E = exp - bias
$$Bias = 2^ k / 2 -1$$
M 은 소수점 아래 부분에 그대로 들어가게 된다.
float F = 15213.0 을 예시로 알아보자
15213 = 11101101101101
= 1.1101101101101 * 2^13
M = 1101101101101
frac = 11011011011010000000000
E = 13
Bias = 127
Exp = E + Bias = 140
Result :
s : 0 , exp : 10001100 , frac : 11011011011010000000000
Denormalized value
exp = 0000...0
E= 1 - Bias
-> 실수의 특성 상 표현 못하는 구간은 분명히 발생하지만 표현 가능한 실수의 간격을 되도록이면 일정하게 유지하려는 목적
이렇게 함으로써 norm 구간과 denorm 구간 사이의 급격한 차이를 없애고 두 구간이 부드럽게 이어짐
Special value
exp = 1111......1
case 1 : exp = 1111...1, frac = 000...0 => infinity
case 2 : exp = 1111...1, frac != 000...0 => Not-a-Number(NaN)
Ex)
float F = 0xC0A00000
binary : 11000000101000000000000000000000
S = 1 -> negative
E = exp - Bias = 129 - 127 = 2
M = 01000.....0
$$v = (-1)^s M 2^E = (-1)^1 1.25 * 2^2 = -5$$
'CS > SystemSoftware' 카테고리의 다른 글
SystemSoftware - Buffer OverFlow #1 (0) | 2021.05.19 |
---|---|
Bomb Lab Solution Phase_1 ~ secret_phase (1) | 2021.05.10 |
SystemSoftware - Machine data(Assembly) #2 (0) | 2021.04.30 |
SystemSoftware - Machine data(Assembly) #1 (1) | 2021.04.28 |
SystemSoftware - float #2 (0) | 2021.04.20 |