프로그래밍/C,C++

자료형(정수형, 실수형) 범위를 알아보자

gameObject 2023. 9. 24. 13:08
728x90

기초적인 코딩테스트 문제를 풀다보면

자료형의 범위를 초과하여 풀이에 실패하는 경우가 많아서

정확히 알고 넘어가고자 정리한다.

 

가장 대표적인 부분만 정리하여

기억속에 남기고자 한다.

 

정수형 자료형

char : 1바이트 : -128 ~ 127

short : 2바이트 : -32,768 ~ 32,767

int : 4바이트 : -2,147,483,648 ~ 2,147,483,647

long long : 8바이트 : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

 

1바이트는 비트 8개를 의미한다.

즉, 4바이트는 32비트를 의미하며 2의 32제곱 만큼의 크기를 갖는다.

 

unsigned가 붙은 자료형이 있는데 이는 부호비트 1비트를 부호대신 범위를 표현하는데 사용하여

음수를 표현할 수는 없지만 양수에서 더 넓은 범위를 표현할 수 있다.

 

실수형 자료형

실수형 자료형은 항상 부호가 있다.

실수형은 부동소수점 방식을 통해 계산이 된다.

부동소수점 방식은 정밀도에 의존한 근사값을 표현하는 방식인데

따라서 float > double > long double 으로 갈수록 더 정밀하게 실수값을 반환한다.

 

실수형은 부호부, 지수부, 가수부로 나누어져 있다.

 

float : 4바이트 : 1bit(부호) + 8bit(지수부) + 23bit(가수부)

double : 8바이트

long double : 시스템마다 약간씩 다르며 8바이트 이상을 사용하고 double 자료형에 비해 표현범위가 넓다.

 

정밀도에 대해서 생각해보면

분수 1/3을 보았을때 이 숫자의 10진수 표현은 0.333333..으로 3이 무한대로 나온다.

그러나 자료형에는 바이트크기가 정해져있으므로 특정 숫자까지만 표현할 수 있다.

기본적으로 std::cout의 기본 정밀도는 6이라고 한다. 즉 모든 부동 소수점 숫자는 6자리까지만 유의하다고 가정하여 이후는 잘라낸다.

그러나 <iomanip> 헤더 파일에 정의된 std:setprecision()함수를 사용해서 cout에서 출력되는 기본 정밀도를 재정의할 수 있다고 한다.

참고 : https://boycoding.tistory.com/152

 

C++ 02.06 - 부동 소수점 숫자 (floating point numbers)

02.06 - 부동 소수점 숫자 (floating point numbers) 정수(integer)도 매우 좋지만 때때로 매우 큰 숫자나 소수점이 있는 숫자를 저장해야 하는 경우도 있다. 부동 소수점(floating point) 자료형 변수는 4320.0, -3.

boycoding.tistory.com

 

728x90