Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

zyeon's 작심삼일 코딩 공부

자료형 본문

c++ 정리

자료형

젼뀨 2024. 6. 4. 18:18

프로그래밍을 할 때, 저장할 데이터의 종류에 따라 다른 자료형을 사용한다.

자료형 바이트수 범위
정수형 short 2 -32,768 ~ 32,767
int 4 -2,147,483,648 ~ 2,147,483,647
long 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
문자형 char 1 -128 ~ 127
논리형 bool 1 false, true (0 ~ 1)
실수형 float 4 1.2E-38 ~ 3.4E38
double 8 2.2E-308 ~ 1.8E308
long double 8 2.2E-308 ~ 1.8E308

 

1바이트 = 8비트 이고, 1비트에는 0또는 1의 값을 저장할 수 있다. 따라서 1바이트에는 2^8가지의 경우의 수를 저장할 수 있는 것이다.

 

보통 자료형에 signed가 생략되어 있고 +, - 와 같은 부호를 붙인 데이터를 저장할 수 있다. unsigned를 붙이면 양수만 사용한다는 뜻이다.

unsigned char은 0 ~ 255 의 범위 표현이 가능한 것이다.

 

signed 최상단 비트를 MSB(Most Significant Bit)라고 하며, 0일 때 양수, 1일 때 음수를 표현한다.

0 0 0 0 0 0 1 0

 ▲MSB

signed char c = 2; 일 때 

1 1 1 1 1 1 1 0

 ▲MSB

signed char c = -2; 일 때

 

-2는 00000010⑵에대한 2의 보수를 사용해 값을 저장했다.

보수를 구하는 법은, 대응되는 양수의 비트들을 반전 후 1을 더하면 된다.

보수를 사용하는 이유는 음수의 연산 과정의 문제 때문이다. 

 

자료형에 따라 데이터가 어떻게 저장되는지 왜 알아야할까?

범위를 넘어간 숫자를 어떻게 처리하는지 알 수 있다. 흔히 말하는 오버플로우와 언더플로우의 원리를 알 수 있다.


실수형은 정수형과 표현 방식이 다르다. 실수형은 부동소수점 방식을 사용한다.

 

부동소수점 방식은 소수점의 위치가 떠서 움직인다는 뜻으로, 소수점의 위치를 움직여 한정된 비트로 아주 큰 정수와 아주 작은 소수의 표현을 가능하게 해준다. 고정소수점 방식에 비해 큰 범위의 값을 표현할 수 있다는 장점이 있는 것이다.

a * 10^b    (1≤ a ≤10)

과학적 표기법에 따라 실수를 표기할 때, a를 가수, b를 지수라고 한다. 또한 a는 가수부분으로 실수의 정밀도를 나타내고, 10^b는 지수부분으로 실수의 표현 범위를 나타낸다. 

 

부호 비트: 1비트

지수 부분: 8비트

가수 부분: 23비트

 

이와 같이 정해진 수의 비트 할당을 해주며, 이진수로 딱 떨어지지 않는 경우도 있기에 정확한 수를 표현하지 못 할 때에는 근사치를 나타낸다. 이를 고려하고 프로그래밍의 유의해야 한다.

 

double은 float의 두 배 정밀도를 가지고 있으며, 이는 double이 float에 비해 소수점 자리 수의 두 배 만큼 오차 없이 표현할 수 있다는 말이다.

 

 

'c++ 정리' 카테고리의 다른 글

포인터와 배열  (0) 2024.06.20
포인터  (0) 2024.06.17
지역변수, 전역변수, 정적변수, 외부변수  (2) 2024.06.14
비트 연산자, 플래그  (1) 2024.06.05
C++을 공부하는 이유, 객체 지향 프로그래밍  (1) 2024.06.04