데이터 형식
[주석]
주석 : //와 /* ~ */ 형식으로 사용한다. 프로그램 자체에는 어떠한 영향도 주지 않고 메모를 남기는 것
그렇다면 우리는 주석을 왜? 사용해야 할까?
> 이는 메모를 남기거나, 다른 프로그래머와 소통, 혹은 먼 미래에 내가 다시금 볼 때 기억하기 위해 등 주석을 사용한다.
[데이터의 대표적인 형태]
int, float, string, bool이 대표적이다. 각각의 데이터들은
정수형(int = -1, 0, 1, 2, 3, 4 등),
실수형(float = 3.14),
문자형(string = "Rookiss"),
불리언(bool = true/false(참/거짓)) 으로 나타낸다.
예를 들어 체력, 마력, 스탯정보, 퀘스트 정보, 경험치, 자동 사냥 여부 등 여러 게임 요소들의 데이터를 설계할 때 위에서 설명한 것 과 같이 다양한 데이터의 형태를 띈다는 것을 볼 수 있다.
변수
[변수]
변수 = 데이터를 저장하는 바구니!
변수라는 바구니를 사용할 때에는 크게 3가지 기능이 있다. 임대 단계(초기화), 쓰는 단계(선언), 사용하는 단계(활용)으로 나눠볼 수 있다.
- 임대 단계는 예를 들어 int hp;와 같이 초기화해주는 단계이다.
- 쓰는 단계는 hp = 100;와 같이 초기화한 hp 변수에 선언을 해주는것이다.
- 사용하는 단계는 hp를 이용하여 값을 출력하거나 사용하는 단계이다.
- 물론 임대 및 쓰는 단계를 압축하여 int hp = 100;과 같이 초기화와 선언을 동시에 할 수 있다.
정수 형식
[int형]
정수형의 최소값과 최대값은 얼마일까?
아래 링크를 살펴보면 int 데이터 타입 말고도 다양한 데이터 타입의 값을 사용하는 것을 볼 수 있다.
그렇다면 왜? 다양한 데이터 타입이 존재할까?
> 생각해보면 간단하다. 과자 1개를 사는데 엄청나게 큰 장바구니를 들고 갈 필요성이 없다. 그러므로 각 크기에 맞는 다양한 데이터 타입이 존재하는 것이다.
2진수, 10진수, 16진수
[진법]
10진수
- 0 1 2 3 4 5 6 7 8 9
- 위의 10가지 숫자의 조합으로 수를 표현한다.
- 사람이 사용하기 가장 자연스러운 방법이다.
2진수
- 0 1
- 위 2가지 숫자의 조합으로 수를 표현한다.
- 0과 1로 모든 것을 표현하려고 하므로 숫자의 범위가 금방 커진다.
- 컴퓨터가 사용하는 방법이다.
16진수
- 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 위 16가지 숫자와 문자의 조합으로 수를 표현한다.
- 주로 비트 연산을 위해 사용한다.
컴퓨터에 값을 입력 할 때 10진수 hp = 100이나, 16진수 hp = 0x64이나, 2진수 hp = 0b01100100으로 하나 모두 동일한 의미이다. 즉 진법의 형태로 값이 저장되는 것이 아니며 컴퓨터가 저장할 때에는 전기 신호(2진법)으로 모두 변환되어 저장된다.
데이터 타입의 범위
[byte & int]
- bit 8개가 모인 것이 1byte이다.
- 따라서 1byte는 28이므로 0~255의 값을 가질 수 있다.
- 그렇지만 1byte의 최상위 비트는 음수 값을 나타낸다.
- 계산기를 DWORD로 변경하여 최상위 비트를 1로 설정하면 위 정수 숫자 형식의 범위인 -21억 ~ 21억이 뜨는 모습을 볼 수 있다.
[float & double]
float와 double는 int와 다른 실수형을 나타내는 부분이다. 어떠한 상황에서 실수형을 사용할까? 생각해보면 속도(=스피드)와 같은 개념을 생각할 때 1초에 1m, 2m와 같이 딱 떨어지는 것이 아닌 현재 속도에 따라서 이동 거리가 달라지게 된다. 이러할 때 실수형 데이터 자료형을 사용하여 값을 표시할 수 있다.
- 그렇지만 float는 int와 다르게 값의 정확하게 나타나지 않는다. 왜냐하면 float 또한 메모리 공간은 유한하기 때문에 컴퓨터가 이와 유사한 값을 나타낸다.
- 이로 인해 데이터의 저장 시 정확하게 해당 값으로 저장되는 것이 아닌 근사치로 저장하게 된다.
[char & string]
char은 문자 단 하나만을 표현할 때 사용된다. 이와 반면에 string은 문자열을 표현할 때 사용한다. 문자열이란? 문자가 연속해서 여러개가 나열되어 있는 것을 뜻한다. 그렇다면 컴퓨터는 문자 하나를 어떻게 저장할까? 사실 컴퓨터는 아스키코드라는 것을 사용하여 문자를 정수로 표현하고 있다.
이와 관련된 정보는 아주 자세하게 정리되어 있는 블로그를 참고한다.
https://stepbystep1.tistory.com/10
[bool]
bool은 특이하게 참, 거짓의 값만 가질 수 있다. 그렇지만 int, float, string와 같이 매우 중요한 데이터 자료형이다. 게임에서는 주로 자동 사냥 중인가?, 소리 기능을 킨 상태인가? 끈 상태인가?, 던전 입장 조건을 만족하는가? 등 다양한 상황에서 사용할 수 있는 자료형이다.
'공부 > 인프런 - Rookiss' 카테고리의 다른 글
Part 1-3-1. TextRPG : 디버깅 기초, 직업, 플레이어/몬스터 생성, 전투 (0) | 2023.08.02 |
---|---|
★ Part 1-2-2. 코드의 흐름 제어 : 함수, ref, out (0) | 2023.08.02 |
Part 1-2-1. 코드의 흐름 제어 : if와 else, switch, 상수와 열거형, while, for, break, continue (0) | 2023.07.31 |
Part 1-1-2. 데이터 : 형변환, 스트링 포맷, 산술 연산, 비교 연산, 논리 연산 (0) | 2023.07.27 |
Part 1. C# 기초 프로그래밍 입문 (0) | 2022.11.13 |