기초적인 코딩테스트 문제를 풀다보면
자료형의 범위를 초과하여 풀이에 실패하는 경우가 많아서
정확히 알고 넘어가고자 정리한다.
가장 대표적인 부분만 정리하여
기억속에 남기고자 한다.
정수형 자료형
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,C++' 카테고리의 다른 글
C++ 입력 함수 / cin, cin.get(), getline() (1) | 2023.10.26 |
---|---|
C언어와 C++의 차이점이 무엇이 있을까? (1) | 2023.10.25 |
c++ string::find() , string에서 특정 문자열을 찾아내는 함수 (0) | 2023.07.18 |
C++, substr_문자열 찾아내는 함수 (0) | 2023.07.18 |
C++, to_string(x) 숫자를 문자로 변환 (0) | 2023.07.18 |