Search

고정소수점, 부동소수점

대분류
CS
소분류
컴퓨터 해부 노트
유형
컴퓨터의 숫자 이해
주요 레퍼런스
https://modulabs.co.kr/blog/fixed-points-and-floating-points-how-computers-understand-numbers/
최종 편집 일시
2024/11/09 13:33
생성 일시
2024/10/23 05:15
14 more properties

컴퓨터가 숫자(소수점)를 이해하는 방법

“부동”이라는 한자는 떠다니며 정해진 위치가 없음을 의미
이는 “float”라는 영어 단어와 깊은 연관이 있다.
컴퓨팅에서 “float”는 부동소수점 수를 지칭하는데, 이 용어는 소수점의 위치가 고정되어 있지 않고 데이터의 크기나 정밀도에 따라 자유롭게 이동할 수 있다는 사실을 반영한다.
이러한 특성은 컴퓨터가 다양한 범위의 실수를 효율적으로 표현할 수 있게 해준다.

고정소수점

고정소수점 방식에서는 숫자를 정수 부분과 소수 부분으로 나누어 각각 고정된 위치에 저장한다.
예를 들어, 263.3이라는 숫자를 4바이트(32비트) 시스템에서 표현한다고 가정하였을 때, 여기서 부호는 1비트, 정수 부분은 16비트, 소수 부분은 15비트를 사용한다고 한다.
정수 부분(263): 2진수로 변환하면 0000000100000111이다.
소수 부분(0.3): 2진수로 근사치를 표현하면 010011001100110이다. (정확한 표현은 불가능하므로 근사치 사용).
→ 따라서, 이 시스템에서 263.3은 부호 비트가 0(양수), 정수 부분이 0000000100000111, 소수 부분이 010011001100110으로 표현된다.

부동소수점

부동소수점 수는 가수(mantissa)와 지수(exponent)로 구분하여 표현
부호(bit): 양수이므로 0이다.
정규화: 263.3 을 2진수로 변환하면 100000111.01001100110011001100110011...(무한반복)이고, 정규화를 통해 1.0000011101001100110011001100110011... * 2^8로 표현할 수 있다.
가수(mantissa): 소수점 이하 부분을 사용
필요하다면 23비트로 맞추기 위해 뒷부분을 잘라내거나 0으로 채운다.
지수(exponent)와 Bias: 지수는 8이고, IEEE 754 표준에서는 32비트 부동소수점의 경우 지수에 127(Bias)를 더한 값을 사용한다.
따라서, 지수 부분은 8 + 127 = 135, 2진수로 10000111이다.
이런 식으로, 263.3은 부동소수점으로 표현될 때 부호, 지수, 가수 부분을 각각 0, 10000111, 00000111010011001100110으로 나타낼 수 있다.

부동소수점에서 편향(Bias) 127을 더하는 이유

지수 표현의 범위를 조정하기 위해서
지수를 부호 없는 정수로 표현할 때, 음수 지수와 양수 지수를 모두 다루어야 한다.
하지만 부동소수점 표준에서는 음수를 다루는 대신 Bias 값을 더하여 모든 지수를 양수로 만들어 처리한다.
이렇게 함으로써 지수를 부호 없는 정수로 표현할 수 있으며, 지수의 범위를 더 크게 확보할 수 있다.