패스트캠퍼스 C++ 실력 완성 올인원 패키지 Online 수강 내용 중, 공부한 내용을 올립니다.
(강추입니다..)
1. 정수형 표현 방법
- 정수 선언 방식에 따라 10진수, 8진수, 2진수, 16진수 형태의 정수를 선언할 수 있다.
int num0 = 11; // 10진수
int num1 = 011; // 8진수
int num2 = 0b11; // 2진수 (binary)
int num3 = 0x11; // 16진수 (Hex)
2. 정수의 크기
- 일반적으로 integer는 32bit이다. (4바이트)
- 개발환경에 따라 변수의 size가 달라질 수 있다.
int intNum = 0;
long longNum = 0;
int* intPointer = &intNum;
cout << sizeof(intNum) << endl; // 4byte?
cout << sizeof(longNum) << endl; // 4byte?
cout << sizeof(intPointer) << endl; // 4byte?
- 변수의 길이가 중요할 때에는 변수 크기도 함께 정의해야 하는 것이 좋다. (Fixed width integer)
int8_t int_size_check0 = 0;
int16_t int_size_check1 = 0;
int32_t int_size_check2 = 0;
cout << sizeof(int_size_check0) << endl; // 1byte
cout << sizeof(int_size_check1) << endl; // 2byte
cout << sizeof(int_size_check2) << endl; // 4byte
3. 자료의 크기
3.1. Unsigned integer
- 8bit maximum = 255 = 2^(8) - 1 = (binary) 1111 1111
- 16bit maximum = 65535 = 2^(16) -1 = (binary) 1111 1111 1111 1111
cout << (int)numeric_limits<uint8_t>::max() << endl;
cout << numeric_limits<uint16_t>::max() << endl;
3.1. Signed integer
- 음수의 경우 2의 보수를 활용 (Twos compleent)
음수 즉, 첫번째 자리가 1인 경우, Binary 양수에서 2의 보수를 취한 값을 음수로 취하면 됨.
- 8 bit maximum = 127 = 2^(7) - 1 , (b) 0111 1111
- 16bit maximum = 32767 = 2^(15) - 1, (b) 0111 1111 1111 1111
cout << (int)numeric_limits<int8_t>::max() << endl;
cout << numeric_limits<int16_t>::max() << endl;
- 8 bit minimum = -128 , (b) 1000 0000 => 2의 보수 => (0111 1111) + 1 => 1000 0000 ==> -128
- 16 bit minimum = -32768
cout << (int)numeric_limits<int8_t>::min() << endl;
cout << numeric_limits<int16_t>::min() << endl;
4. Overflow & Underflow
- 최대/최소로 담을 수 있는 bit를 넘어가버림
- Unsigned / Signed 에 따라 달라짐.
// Overflow
uint32_t num32 = numeric_limits<uint32_t>::max();
uint32_t num32_1= num32 + 1;
cout << "Overflow test" << endl;
cout << num32 << endl;
cout << num32_1 << endl;
// Underflow
uint32_t num32_min = numeric_limits<uint32_t>::min();
uint32_t num32_min_1 = num32_min - 1;
cout << "Underflow test" << endl;
cout << num32_min << endl;
cout << num32_min_1 << endl;
'공부 > C++' 카테고리의 다른 글
C++, 열거형 Enumerate type (0) | 2024.05.06 |
---|---|
C++, 부동소수점 (0) | 2024.04.15 |
백준 알고리즘 1004번, 어린왕자 (C++) (0) | 2024.01.08 |
백준 1008번 (C++) (3) | 2024.01.01 |
C++ 백준 1002번 (1) | 2023.12.25 |
선형 대수 - 13. 선형 부분공간 (4) | 2023.11.02 |
선형 대수 - 8. 벡터의 정의 및 연산 (7) | 2023.09.26 |
C++과 Python의 차이, 컴파일 언어와 인터프리터 언어의 차이 (83) | 2023.09.07 |