int 와 float는 똑같은 4byte의 크기인데 왜 표현가능한 수의 범위가 다를까?
이 문제에 대한 해답을 간략하게 설명하고자 한다.
1. int와 float의 구조
다들 알다시피 int와 float는 4byte 즉, 총 32비트로 구성되어있다.
하지만 float는 int와 달리 굉장히 큰 범위를 가지고 있다.
그러한 이유는 다음과 같다.
int는 단순한 32비트 구조이기 때문에 2^-31 ~ 2^31 - 1 의 범위를 갖는다.
하지만 float는 32비트가 int처럼 단순하게 하나로 구성돼있는 것이 아닌
부호비트(1bit) * 지수(8bit) * 유효자리비트(23bit)의 32비트로 구성되어있다.
그렇기 때문에 int는 대략 42억의 수를 표현할 수 있는 반면에
float는 1.175494351 E-38 ~ 3.402823466 E + 38 즉, 0이 38개나 붙는
어마어마한 수의 표현 범위를 가지고 있는 것이다.
그렇기에 int형의 지수비트 2^n 과 float형의 지수비트 2^n 은 동시에 존재하여 4byte의 동일한 크기를
나타내는 것 같지만 사실 표현 가능한 수의 범위가 구조 상의 차이로 다른 것이다.
2. 결론
int와 float의 수의 표현범위가 다른 이유는 int는 단순한 4byte구조이기 때문에 비트 수만큼 범위가
정해진다. 하지만 float의 경우엔 int와 같은 4byte 구조지만 부호1비트, 지수8비트, 유효자리23비트로
구성되어 있기 때문에 구조상의 차이로 int와 float의 수의 표현 범위가 다를 수 밖에 없다.
'TIL > 잡담' 카테고리의 다른 글
Chapter 3 - 3 팀 프로젝트를 마치며 느낀점 (0) | 2023.10.20 |
---|---|
팀 프로젝트 노션으로 정리하기 (0) | 2023.10.12 |
협업을 하면서 고민했던 점 (0) | 2023.09.01 |