A. 변수 기초
1. 변수 개요
a. 컴퓨터에 저장되는 변수 이해하기
1) 정리하자면 CPU는 데이터를 가공, RAM은 데이터 저장
CPU와 RAM은 서로 소통하면서 프로그램을 실행함
이때 RAM은 각 주소값이 있음
2) 프로그래밍 언어를 사용해서 데이터 공간을 할당하려고 할 때
주소값은 사용이 어려우니 어려우니 변수를 선언함
이때 용도에 따라 RAM에 각 영역에 할당되게 됨
💙 c++ 주석
// 한줄 주석
/* */ 여러줄 주석
b. 변수 선언
📘 문법
[타입] [변수이름]
-----------------
int hp;
💙 변수 선언 후 RAM에 할당되는 모습
대표적으로 아래만 암기하면 된다
- char : 1 byte / 값의 범위는 대략 -100 ~ 100
- short : 2 byte / 값의 범위는 대략 -3만 ~ 3만
- int : 4 byte -21억 / 값의 범위는 대략 ~21억
- long long : 8 byte / 값의 범위는 대략 21억 초과 시 사용
데이터 형식 범위(타입) 은 여기서 자세하게 확인 가능함
정말 입문자용 강의라서 너무 단순한 내용은 따로 작성하지 않음
명령문은 실행이 되고 있는 메소드 안에 해야 함
위에서 아래로 해석하기 때문에 선언 위치를 잘 파악해야 함
😋 최종 예제
#include <iostream>
using namespace std;
int hp;
int maxHp;
int main()
{
maxHp = 100;
hp = maxHp;
cout << hp;
}
✨ 실행결과
100
B. 컴퓨터의 데이터 타입별 이해
1. 정수를 이해하는 원리
a. 2의 보수
2의 보수 : 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수
1바이트에서는(char) 가장 왼쪽 숫자를 1로 킨 것 (다른 단위도 똑같이 가장 왼쪽 비트 1)
char의 데이터 값이 -128~127인 이유도 보수가 -128이기 때문에
최대로 만들 수 있는 값이 127이다!!
unsigned 가 붙은 경우엔 2의 보수가 들어가지 않고 128값 그대로 한번 더 들어가서 값이 2배가 되는것
💙 반대값 찾는 법
만약 값이 66이라고 가정하고 66의 반대값을 찾는다고 하면
0을 1로, 1을 0으로 바꿔주고 1을 더해주면 된다 (0으로 끝나면 1로, 1로 끝나면 다음 자리 숫자 +1)
b. 숫자의 범위
메모리가 소실되는 상황에서는 어떤 규칙을 가지고 소실될까?
예를들어 int 값으로 606356034라는 값을 저장 후 이 값을 short에 저장한다고 하면
아래와 같이 short 값에 넘어가는 부분은 소실되어서 출력됨
💥 따라서 타입을 변환할때는 조심해야 함
c. n진법
- HEX 16진법
- DEC 10진법
- OCT 8진법 - 덜 중요함
- BIN 2진법
💙 16진법과 2진법이 친화적인 이유
d. 컴퓨터의 연산방식
-값이 나오는 경우 : 정수 오버플로우
💥 종종 나오는 경우가 있으니까 조심해야 함!!
e. 코드에서 진법 사용하기
- 2진법 ➡ 10진법 : 0bNNN
- 16진법 ➡ 10진법 : 0xNNN
❔ 예제
#include <iostream>
using namespace std;
int hp;
int mp;
int main()
{
hp = 0xF; //16진법
mp = 0b1100; //2진법
cout << hp;
cout << mp;
}
✨ 실행결과
1512
2. 문자를 이해하는 원리
a. 아스키코드
char타입이 실제로 숫자를 저장하고 있지만
경우에 따라서 아스키 코드 값에 있는 실제 문자를 저장할 수 있다
3. 실수를 표현하는 원리
a. 근사치
실수는 항상 언제든지 커질 수 있어서 컴퓨터는 정확한 값을 출력한다기 보다
그 근사치를 표현한다고 생각하면 됨
float, double도 정밀도의 차이!
하지만 거의 대부분의 경우 float으로도 충분함
💙 실수 뒤 f가 붙는 이유!
대부분의 경우 실수는 자동으로 double값으로 지정되어 있음
따라서 3.6f로 지정해 float값이라는걸 다시 한번 지정해주는것!
4. Bool을 이해하는 원리
a. 참과 거짓의 이해
int로 0, 1로 표현할 수는 있지만, 무엇이 참인지 거짓인지 판단하기에는 확실하지 않음
따라서 bool 이라는 값을 따로 지정해 참(true), 거짓(false)을 지정해 사용함
이때 참은 1, 거짓은 0값이긴 하다
👉 위 글에 대한 조금 더 자세한 내용은 여기 참고하기!
'프로그래밍 언어 > C++' 카테고리의 다른 글
[자료형(data type)] C++ 기본형 총정리 (0) | 2023.09.05 |
---|---|
C++ 상수 총정리 (0) | 2023.09.05 |
[게임 프로그래머 입문 올인원] 데이터와 로직 : 프로그래밍 개론 (2강) (0) | 2023.09.02 |
[게임 프로그래머 입문 올인원] 데이터와 로직 : 환경 설정 (1강) (0) | 2023.09.02 |
C++ 언어의 개요 및 기초 (2) | 2023.08.30 |