Fixed Point Number Representation: Unsigned and Signed
포스트 난이도: HOO_Middle
# Floating Number
Floating number 또는 Floating point number를 배우고 Floating number의 여러 계산 방법을 이해해야 하는 이유는 컴퓨팅 과정에서의 계산 과정을 개발자가 이해하고 있어야 하기 때문이다.
Floating number를 다루는 다양한 계산 방법이 있으며, 이 중에서 기본적인 Fixed point representation의 unsigned와 signed 방식을 살펴보도록 하자.
Floating number를 나타낼 때 radix를 통해 계산과 표현이 이루어진다는 건 이미 알고 있을 것이다.
(an an-1... a1 a0. b1 b2... bm) r= an∙ rn + an-1∙ rn-1 +... + a1∙ r + a0 + b1/r + b2/r2 +... + bm/rm
또한 Number system 방식(예를 들어 hexa -> decimal, binary -> octal 등등)은 이미 기본적으로 알고 있는 부분이기에 이번 포스트에서는 설명을 생략하고 바로 Fixed point에 대해서 알아보도록 하자.
# Fixed Point Number Representation
Fixed point에서도 decimal과 binary point 부분에 대해서 살펴보도록 하자.
우선 decimal point나 binary point가 가지는 구조적 특징은 동일하다.
여기서 말하는 동일한 구조적 특징은 둘 다 모두 integer part와 fraction part을 나눠서 가지고 있다.
Integer와 Binary point 모두 machine level에서는 position이 fixed 되어 있는데, 일반적으로 rightmost position 형태를 취하고 있다.
따라서 우리는 이것을 Fixed point represenation이라고 부르며, integer로 나타내는 특징을 가지고 있다.
하지만 여기서 주의할 점은 무조건 rightmost position 형태인 것은 아니다.
조건이나 상황에 따라서 leftmost position인 형태를 보이며 integer가 아니더라도 represetation이 되기도 한다.
예를 들면 0과 1 사이의 fraction 부분을 나타내는 경우가 바로 leftmost position 경우를 말한다.
하지만 이것은 예외 사항이니 우선적으로는 rightmost position 형태의 각각의 Fixed points들을 배워보도록 하자.
# Unsigned and Signed Fixed Point
Fixed point에 있어서 Unsigned인지 아니면 Signed인지에 따라서 나타내지는 방법이 조금 다르다.
아래의 그림을 참고하면 이해하기 수월할 것이다.
Fig_01 그림은 unsigned fixed point number이며, Fig_02 그림은 signed fixed point number이다.
이처럼 Signed의 경우에는 Positive와 Negative를 표현해줘야 하는 부분이 필요하기 때문에 앞의 첫 번째 수가 이 역할을 수행한다.
하지만 Unsigned의 경우에는 구분해줘야 할 필요가 없기 때문에 신경 쓰지 않아도 무방하다.
Fixed point number의 smallest와 largest 숫자의 예제는 아래와 같다.
# Smallest positive number
0 0000 0001 = 1/16 = 2^-4
# Largest positive number
0 1111 1111 = 2^3*1 + 2^2*1 + 2^1*1 + 2^0*1 + 1/2 + 1/4 + 1/8 + 1/16
# Smallest negative number
1 0000 0001 = -1/16 = -2^-4
# Largest negative number
1 1111 1111 = -(2^3*1 + 2^2*1 + 2^1*1 + 2^0*1 + 1/2 + 1/4 + 1/8 + 1/16)
Fixed point number 방식을 이해했다면 그다음으로 Floating point number에 대해서 이해가 가능하다.
'Computer Science' 카테고리의 다른 글
[Machine Level Data ] Floating Point Number Examples (0) | 2022.02.09 |
---|---|
[Machine Level Data Representation] Floating Point Representation (0) | 2022.02.07 |
[Operating System] Monolithic kernel and Microkernel (0) | 2022.01.26 |
[Operating System] Shell이란? (0) | 2022.01.26 |
[Database] Data Model(데이터 모델) (0) | 2022.01.20 |
댓글