Float과 Int의 표현 가능한 범위 차이
값 형식 중 수를 표현하는 형식은 다양하다.
그 중 자주 사용되는 것이 float과 int이다.
이 둘은 모두 32비트로 표현되는데, 내부적으로 데이터를 저장하는 방식이 다르기 때문에 결과적으로 다른 범위의 수를 표현할 수 있게 된다.
float은 부동소수점 데이터 형식으로, 근사 범위는 ±1.5 x 10−45 ~ ±3.4 x 1038이고, ~6-9개 자릿수를 표현할 수 있다.
int은 정수 형식으로, -2,147,483,648 ~ 2,147,483,647까지 표현 가능하다.
int
- 32비트 중 1비트는 부호를 나타내기 위해 사용되고, 나머지 31비트가 숫자값을 나타는 데 쓰인다.
- int가 표현 가능한 최소 수 -2,147,483,648은 -2^31이고, 최대 수 2,147,483,647는 2^31 - 1이다.
float
- 소숫점 아래의 수를 나타내기 위해 지수부를 저장하는 데 일부를 활용한다.
- 32비트 중 1비트는 부호를, 8비트는 지수부를 나타내고, 나머지 23비트가 실제 숫자값을 나타내는 가수부 역할을 한다.
- 지수부는 크게나 작게나 하는 "배수"를 결정하며, 가수부는 실제 "값"을 나타낸다.
- 지수부 8비트 -> 2^8 -> 256범위의 수를 표현할 수 있음
- 23비트로 표현된 가수부 값을 -126부터 127까지의 지수로 2의 승수(2ⁿ)를 곱함으로써 나타낼 수 있다.
- 따라서 float은 '지수부'의 존재로 인해 int보다 더 넓은 값 표현이 가능해진다.
내일배움캠프 (휴일) TIL - 부동소수점 표기법
갑자기 캠프 내 스승님이 요상한 TMI를 던져서 공부하게 된 내용 "부동소수점의 지수부 바이어스인 127은 지수가 음수임을 표현하기 위해서입니다." 여기서 알아들을 수 있는 말? 부동소수점과 음
szloveleesz.tistory.com
비교
표현 범위:
- int는 32비트 공간에서 부호 있는 정수를 표현한다. 따라서 표현할 수 있는 정수 값의 범위는 -2,147,483,648에서 2,147,483,647까지이다.
- float는 부호 비트, 지수부, 그리고 가수부로 구성되어 있어서 광범위한 실수를 근사적으로 표현할 수 있다. 그 결과, 매우 큰 수와 매우 작은 수, 그리고 그 사이의 수를 모두 표현할 수 있지만, 모든 실수를 정확하게 표현할 수는 없다.
정밀도:
- int는 정수를 정확하게 표현한다. 즉, 정밀도에 대한 문제가 없다.
- float는 근사값을 사용하여 실수를 표현다. 이로 인해 일부 실수는 정확하게 표현되지 않을 수 있다. 따라서 연산이 반복될 때 오차가 누적될 수 있다.
밀도:
- 일정 범위 내에서는 float가 int보다 더 많은 수를 표현할 수 있다. 예를 들면, 0과 1 사이에는 무한히 많은 실수가 있지만, 정수로는 0과 1만 표현 가능하다. 이런 관점에서 float는 특정 범위 내에서 더 밀도 있게 수를 표현할 수 있다.
결론적으로, float는 광범위한 실수 값을 근사적으로 표현하는 데 적합하며, int는 정확한 정수 값을 표현하는 데 적합하다.
'👾 내일배움캠프 > 🎮 TIL & WIL' 카테고리의 다른 글
내일배움캠프 53일차 TIL - 접근제한자에 대한 이해 (0) | 2023.10.26 |
---|---|
내일배움캠프 52일차 TIL - ref와 out 한정자 (1) | 2023.10.25 |
내일배움캠프 50일차 TIL - WBS란? (협업 준비하기) (0) | 2023.10.24 |
내일배움캠프 48일차 TIL - 팀 과제 (1) | 2023.10.22 |
내일배움캠프 47일차 TIL - UI 담당자의 반성 (1) | 2023.10.22 |