선언할 변수의 메모리 공간의 크기를 나타내는 것.
'자료형 ( 크기 - byte)' 로 나타냄
1Byte = 8bit
2^10 byte = 1024 byte = 1 KB
2^10 KB = 1024 KB = 1 MB
2^10 MB = 1024 MB = 1 GB
2^10 GB = 1024 GB = 1 TB
정수형: char(1), short(2), int(4), long(4), long long(8)
실수형: float(4), double(8)
1bit는 0과 1로, 데이터가 있다 없다로 나뉨.
1bit는 0과 1, 표현할 수 있는 가지수는 2개.
= 1byte는 표현할 수 있는 가지수가 2^8개 (256개).
양의 정수 자료형 1바이트에는 0~255까지 256개의 데이터 저장이 가능하다.
256을 대입하면 어떤 일이 생길까?
#include <iostream>
using namespace std;
int main(){
unsigned char a = 1;
a = 256; // a = 0
return 0;
}
255(10) = 1111 1111(2)
256(10) = 1 0000 0000(2)
256은 9bit이고 1byte를 초과하므로 0000 0000만 저장된다.
따라서 a=0 이라는 결과가 나온다.
정수 자료형 1바이트에는 256가지 데이터를 표현할 수 있다.
-1 ~ -128 => 128가지 -> 1--- ----
0 ~ 127 => 128가지 -> 0--- ----
=> -128 ~ 127 256가지
signed 자료형에서 가장 왼쪽에 위치한 비트는 MSB (Most Significant Bit)로 음수(1), 양수(0)를 나타낸다.
2진법에서 뺄셈은 음수를 더하는 것이다.
=> 2진법에서 음수는 더했을 때 0이 되는 비트이다.
-1을 구하는 방법은 "1+x = 0"이다.
=> 0000 0001 + x = 0 이므로 -1 = x = 1111 1111이다.
1 0000 0000을 만들어 데이터가 저장될 공간의 크기를 넘겨 0000 0000으로 만드는 것이다.
음수를 구하는 방법은 2의 보수법( NOT 연산 + 1 )을 사용하면 편리하다.
ex)
2 = 0000 0010
2의 보수 = 1111 1101
2의 보수 + 1 = 1111 1110 = -2
#include <iostream>
using namespace std;
int main(){
cout << "Hello, World!" << endl;
unsigned char a = 1;
a = 255;
char b = 0;
b = 255; // b = -1로 변경된다.
a = -1; // a = 255로 변경된다.
return 0;
}
양의 정수만 표현하는 자료형 unsigned char에서 1111 1111은 255였다.
정수를 표현하는 자료형 signed char에서 1111 1111은 -1이다.
unsigned char 255와 signed char -1은 같은 비트값을 가진다.
실수 자료형과 정수 자료형은 메모리에서 표현하는 방식이 다르다.
0~1 사이의 실수도 무한으로 존재하기 때문.
=> 프로그래밍에서는 부동소수점 방식을 사용한다.
실수는 이진법에서 근사값으로 표기된다.
자료형의 크기가 클수록 표기할 수 있는 비트의 범위가 늘어나 정밀도가 올라간다.
이진법에서 0.1(2) = 2^-1 = 0.5(10)이다.
0.01(2) = 2^-2 = 0.25(10)이다.
=> 0.11(2) = 2^-3 = 0.75(10)이다.
참고)
https://learn.microsoft.com/ko-kr/cpp/cpp/fundamental-types-cpp?view=msvc-170
기본 제공 형식(C++)
자세한 정보: 기본 제공 형식(C++)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=msvc-170
데이터 형식 범위
데이터 형식 범위에 대한 자세한 정보
learn.microsoft.com
'Server > C++' 카테고리의 다른 글
함수 (Function) (1) | 2024.07.20 |
---|---|
입출력 (IO) (0) | 2024.07.20 |
전처리기 (#) (0) | 2024.07.20 |
연산자 (Operator) (0) | 2024.07.20 |
VSCode - C++ 시작하기 (0) | 2024.07.20 |