- floating point representation: 1.xxx * 2^yyyy의 형식으로 표현
- IEEE754: 1 sign bit, 8 exponent bits, 23 significand bits
- sign bit가 1이면 음수, 0이면 양수
- 앞에 "1."이 생략되어있다고 보기 때문에, significand는 언제나 0에서 1 사이의 수가 된다.
- 모든 숫자가 0인 경우를 0으로 약속한다.
- exponent에는 biased notation(127)을 사용한다. unsigned value를 생각한 뒤에 127을 빼주면 된다.
- 따라서 $(-1)^{S} (1+\text{Significand}) 2^{\text{exponent}-127}$
Special Numbers
- 무한대는 exponent가 모두 1이고 significand가 모두 0인 수로 표현한다.
- 그러면 exponent가 모두 1이고 significand가 nonzero인 경우, exponent가 모두 0이고 significand가 nonzero인 경우가 남는다.
- 이를 활용하고자, exponent가 모두 1이고 significand가 nonzero인 경우를 NaN(Not a Number)로 취급했다. NaN이 아주 많을 수 있기 때문에(significand의 값에 따라서) 이에 따라 어떤 식의 에러가 나왔는지를 나타낼 수 있음.
- exponent가 0이고 significand가 nonzero인 경우를 denorm으로 사용한다. 본래 "1."이 생략되어있었다고 봤지만 이렇게 되면 그게 없다고 보고, exponent는 -126이 된다고 보자. 그러면 제일 작은 수는 $2^{-149}$, 그 다음은 $2^{-148}$, $2^{-149}*3$, 이와 같은 식이다. 지수가 바뀌면 이 stride가 두 배가 된다.
- 이렇게 하는 이유는? 만약 "1."을 그대로 사용한다면 0 주변에는 일종의 gap이 생긴다. 제일 작은 수가 $2^{-126}$인 반면, 그 다음 수는 $2^{-126} + 2^{-149}$이다.
- Floating point는 덧셈에 대해 associative하지 않다!
- precision이란 값을 나타내기 위해 사용되는 bit의 개수
- accuracy는 실제 값과 컴퓨터로 나타낸 값 사이의 차이
- 따라서 high precision은 high accuracy를 가능하게 하지만, 반드시 guarantee하지는 않는다. 이를테면 float 자료형으로 pi값을 3.14라고 썼다고 하면, accuracy가 높지는 않다.
'컴퓨터 > 컴퓨터구조' 카테고리의 다른 글
[UCB CS61C] Lec10 RISC-V Memory and Calling Conventions (1) | 2024.01.09 |
---|---|
[UCB CS61C] Lec09 RISC-V Logical Instructions (0) | 2024.01.09 |
[UCB CS61C] Lec08 RISC-V (lw, sw, decision making) (0) | 2024.01.05 |
[UCB CS61C] Lec07 RISC-V Intro (0) | 2024.01.05 |
[CS61C] Lec01 Intro (0) | 2024.01.01 |
댓글