Floating Point Number Examples
포스트 난이도: HOO_Middle
# Floating Point Number Examples
#Examples
An 9-bit floating-point number representation system has the following specification:
Among the 8 bits (B8 B7 B6 B5 B4 B3 B2 B1 B0),
bit B8 is the sign bit, and bits B7 B6 B5 B4 is the exponent with a bias value (0 1 0 0).
Bits B3 B2 B1 B0 consist of the mantissa.
The binary number that is represented is
(-1)^(B8 )×(0.B3 B2 B1 B0 )×10^(B7 B6 B5 B4-0100).
예제 문제에서 주어진 비트(bit)는 총 9비트이다.
Signed에 해당하기 때문에 부호를 나타내는 맨 앞의 비트를 제외하면 사실상 8개의 비트를 가지고 floating point 수를 나타낸다.
B7부터 B4까지는 exponent를 나타내고 있으며, B3부터 B0까지는 mantissa 부분에 해당한다.
또한 bias에 대한 값이 0100으로 정해져있기 때문에 (2^k-1)-1로 bias를 구할 필요는 없다.
# 01
Find a positive number x which is representable by this system such that 1+x=1.
# 02
Find the largest positive number y which is representable by this system such that 1+y=1.
1+x =1 이라는 것은 floating point 자체가 근사하여 실수를 표현하는 것이기 때문에 여기서는 1에 x라는 값을 더했을때 어떻게 표현할 것인지를 보여주면 된다.
예를 들어 이전 포스트에서 다뤘던 예제를 활용해본다면, positive floating number의 값은 2^-14가 된다는 걸 알 수 있다.
우리는 이것을 특정 실수 x 값이라고 가정했을때, 1+x =1이라는 문제에서 1+ x는 1+ 2^-14라는 걸 알 수 있다.
이것을 floating point 방식을 활용해서 나타낸다면 아래와 같은 결과가 도출된다.
여기서 헷갈릴 수 있는 부분은 bias는 0100으로 정해졌다고 할지언정 exponent가 왜 갑자기 0101이 되었는지이다.
우선은 1을 더하고 floating point 방식에 따로 소숫점 한칸을 옮겨주었기 때문에 10^1이 exponent 부분에 추가가 된다.
하지만 bias가 0100이기 때문에 0001-0100이 되면 10^1이 아닌 결과가 나온다.
따라서 이 문제의 최종 exponent 값이 10^1이 되어야 하기 때문에 expoent 부분이 0101이 된 것이다.
실질적으로는 1이 첫째 소숫점으로 한칸 옮겨진 거지만 bias가 특정 값이 존재하기 때문에 0101이 된다.
따라서 mantissa 부분은 B3부터 B0이고 exponent 부분은 B7부터 B4이기 때문에 위와 같은 결과가 산출된다.
#02 예제 문제는 largest positive number인 경우를 살펴보는 것이다.
1+y =1이 어떻게 나타내는지 표현하는 것인데, 조건은 mantissa가 최대값인 경우이다.
따라서 위의 문제 해결 방식과 동일하지만 표현에 있어서 다소 다르게 나타낼 수 있다.
mantissa 부분만 다를 뿐 똑같은 과정을 거쳐 최종 결과가 도출되고 나면 y = .0000 1111 * 10^(0101-0100)이 된다.
여기서 소숫점 네자리를 왼쪽으로 옮겨주고 뒤에 10^-4를 더해준다면 y = .1111 * 10^(0001-0100)이 된다.
결과적으로 y= .1111 * 10^-3이 되고 소숫점 첫째 자리에 있던 1은 2^-3에 따라 .0001이 된다.
'Computer Science' 카테고리의 다른 글
[Database] Entity Relation Diagrams(ER Diagrams) (0) | 2022.02.21 |
---|---|
[Database] EER Diagram: Disjoint와 Overlap (0) | 2022.02.20 |
[Machine Level Data Representation] Floating Point Representation (0) | 2022.02.07 |
[Machine Level Data Representation] Fixed Point Number Representation: Unsigned and Signed (0) | 2022.02.04 |
[Operating System] Monolithic kernel and Microkernel (0) | 2022.01.26 |
댓글