포스트

[C#] 기본 데이터 형식과 범위(정수, 2진수, 16진수)

개인 학습을 기록한 내용을 담고 있어 추후 수정될 수 있습입니다.


자료형은 프로그램에서 데이터를 담는 형식을 의미합니다.
프로그래밍 언어 마다 기본적으로 제공하는 자료형이 있고, 프로그래머가 직접 자료형을 만들 수도 있습니다.

이번 포스트에서는 C# 에서 제공하는 기본 자료형에 대해서 설명하겠습니다.

C# 의 기본 자료형은 크게 3가지로 나눌 수 있습니다.

  1. 숫자형
    1-1. 정수형
    1-2. 실수형
  2. 문자형
    2-1. 문자형
    2-2. 문자열형
  3. 불리언형


숫자형

프로그래밍에서 모든 자료형은 한정된 메모리 공간에서 생성되고 제거됩니다.
그렇기 때문에 숫자형 안에서도 정수형과 실수형으로 나뉩니다.

제한된 메모리 공간으로 모든 숫자를 표현할 수 없기 때문에
C# 의 기본 숫자 자료형은 정수형과 실수형으로 나누고
그 안에서도 메모리 공간을 비교적 더 사용해서 더 많은 숫자를 표현합니다.


정수형

예를들어, byte 라는 자료형은 0부터 255까지의 정수를 담을 수 있지만 256 이라는 숫자는
표현할 공간이 부족해서 저장할 수 없습니다.

그리고 모든 저장 공간을 0부터 255까지의 숫자를 표현하기 위해서 사용하기 때문에
숫자의 음수 표현 또한 저장할 수 없어서 음수를 저장할 수 없다는 문제점이 있습니다.


따라서 숫자를 표현하는 메모리 공간의 일부를 때어 숫자의 부호(Signed)를 표현하는데 사용합니다.
byte 라는 자료형에서 메모리 공간을 양보해 부호 공간을 만든 자료형이 sbyte 입니다.
반대로 부호 없이 양의 숫자만 표현하기 위해 사용되는 자료형은 Unsigned 라는 단어의 첫 글자 ‘u’를
기본 자료형에 붙여 사용할 수 있습니다.

여기서 주의할 점은 모든 기본 자료형이 일관되게 명명되지 않았다는 점 입니다.

자료형크기표현 가능 범위
sbyte부호 있는 8비트-128 ~ 127
byte부호 없는 8비트0 ~ 255
short부호 있는 16비트-32,768 ~ 32,767
ushort부호 없는 16비트0 ~ 65,535
int부호 있는 32비트–2,147,483,648 ~ 2,147,483,647
uint부호 없는 32비트0 ~ 4,294,967,295
long부호 있는 64비트–9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
ulong부호 없는 64비트0 ~ 18,446,744,073,709,551,615


위의 표처럼 byte 형은 부호를 사용하려면 ‘s’ 를 붙여야 하지만
그 외의 자료형은 부호가 없는 자료형에서 ‘u’ 를 붙여서 사용합니다.


실수형

정수형은 큰 숫자(혹은 음수를 포함한 작은 숫자)표현을 위해 메모리를 사용했다면
실수형은 메모리를 사용해 정확도를 높입니다.


자료형크기표현 가능 범위
float4 바이트±1.5 × 10^-45 ~ ±3.4 × 10^38
double8 바이트±5.0 × 10^-324 ~ ±1.7 × 10^308
decimal16 바이트±1.0 × 10^-28 ~ ±7.9 × 10^28


문자형

C# 에서는 숫자만 아니라 영어, 한글 등 문자를 저장하는 별도의 자료형이 존재합니다.
문자를 1개만 저장할 경우 문자형, 2개 이상의 문자로 이뤄진 데이터를 저장하는 문자열이 존재합니다.


자료형크기표현 가능 범위
char2 바이트유니코드 문자
string2 바이트 조합유니코드 문자열


문자열인 string 은 유니코드들을 붙여서 사용합니다.
이때, 문자열의 최대 길이는 이론적으로 1,073,741,823 개 까지 가능합니다.


불리언형

불리언형은 오직 True, False 만 저장하는 자료형입니다.


자료형크기표현 가능 범위
bool1true 또는 false

만약, 컴퓨터 구조를 배우셨다면 여기서 의문이 들 수 있습니다.
True, False 만 표현한다면 왜 1 bit 가 아닌 8 bit를 사용할까?

이 의문의 정답은 컴퓨터의 최소 데이터 단위에 있습니다.
컴퓨터에서 데이터를 확인할 때, bit 를 하나씩 확인하지 않고 byte 단위로 확인하는데 bool 형만 1 bit 를 사용한다면,
이는 컴퓨터가 데이터를 읽을 때 더욱 복잡해 질 수 있습니다.

그렇기 때문에 bool 자료형이 True, False 만 저장하더라도 1 bit 가 아닌 1 byte 를 사용합니다.


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.