본문 바로가기
프로그래밍 언어/C언어

[C언어 #1] 자료형 char가 한 글자만 적을 수 있는 이유

by 디버그러 2024. 10. 16.
자료형 char

 

char는 작은따옴표('')로 감싼 'A' 같은 한 글자만 저장할 수 있습니다.

왜 char에는 한 글자만 저장할 수 있을까요?

그 이유는 아스키 코드(ASCII)와 관련이 있습니다.

 

아스키 코드는 문자를 숫자로 표현하는 표준이며, 아래는 아스키 코드 표입니다.

 

 

아스키 코드표

  • 'A' 는 65
  • 'B' 는 66
  • 'a' 는 97

 

 

char형 변수 num에 'A'를 넣어서 실행하면 화면에 A가 출력됩니다.

 

 

'A' 대신 숫자 65를 넣어서 실행해도 똑같이 화면에 A가 출력됩니다.

 

char형 변수 num에 'A'를 저장하면, 컴퓨터는 이를 아스키 코드 65로 변환하여 저장하고, 다시 화면에 출력할 때는 문자 'A'로 변환하여 보여줍니다.

그렇기에 자료형 char는 아스키 코드에 있는 문자 한 글자만 적을 수 있는 것입니다.

 

 

아스키 코드 표준이 128개인 이유

 

컴퓨터 메모리에서 가장 작은 저장 단위는 비트(bit)입니다.

1비트는 0, 1 중에서 한 가지를 가질 수 있고, 8개의 비트가 모여 1바이트(byte)가 됩니다.

즉 1바이트는 0000 0000부터 1111 1111까지, 총 256가지 값을 표현할 수 있습니다.

 

하지만 아스키 코드 표준에서는 7비트만을 사용해서 문자를 표현합니다.

이 때 가능한 값은 2 = 128 이며, 아스키 코드는 128개의 문자를 표현할 수 있게 됩니다.

 

8비트를 사용하지 않는 이유는 첫 번째 1비트는 부호(+, -)가 들어가기 때문입니다.

char는 -128~127까지 256개의 값을 저장할 수 있습니다.

 

 

부호와 unsigned char

 

일반적으로 8비트 중 첫 번째 1비트는 부호를 나타내는 데 사용됩니다. (0은 양수, 1은 음수)

하지만 부호가 필요없고, 양수만 저장한다면 unsigned char를 통해 8비트 전체를 숫자 표현에 사용할 수 있습니다.

이렇게 하면 2⁸으로 0에서 255까지, 총 256개의 값을 저장할 수 있게 됩니다.

 

unsigned는 부호가 없다는 의미로, 확장된 아스키 코드(0~255)를 모두 사용할 수 있게 해줍니다.

참고로 흔히 쓰는 char는 signed char에서 생략된 형태입니다. (char = signed char)

 

아스키 코드 표준: 0~127

확장된 아스키 코드: 0~255