C++에서 unsigned char란 무엇인가?
C++에는 문자 하나를 저장하는 char 자료형이 있습니다. 그런데 코드를 보다 보면 unsigned char라는 표현도 자주 등장합니다. 이번 글에서는 unsigned char가 정확히 무엇을 의미하는지, 그리고 signed char와는 어떤 차이가 있는지 알아보겠습니다.
signed char와 unsigned char의 기본 개념
signed char와 unsigned char는 모두 문자 하나를 저장하는 데 사용됩니다. 변수에는 문자 자체가 아니라 해당 문자의 ASCII 값이 저장된다는 점이 핵심입니다. 예를 들어 'A'를 저장하면 실제로는 숫자 65가 메모리에 들어갑니다.
signed char는 별도로 signed 키워드를 붙이지 않아도 되지만, unsigned char를 사용할 때는 반드시 unsigned 키워드를 명시해야 합니다. 선언 문법은 다음과 같습니다.
unsigned char ch = 'n';
저장 범위의 차이
두 자료형 모두 크기는 8비트(1바이트)로 동일합니다. 하지만 비트를 해석하는 방식이 다르기 때문에 표현할 수 있는 값의 범위가 달라집니다.
- signed char: -128 ~ +127
- unsigned char: 0 ~ 255
왜 unsigned char가 필요한가?
기본 ASCII 값은 0부터 127까지입니다. 128 이상의 영역은 확장 ASCII(Extended ASCII)라고 부르며, 특수 기호나 각국 언어 문자 등이 여기에 포함됩니다.
일반 char나 signed char로는 확장 ASCII 값을 저장할 수 없습니다. 하지만 unsigned char는 표현 범위가 0~255이므로 확장 ASCII 영역의 값도 문제없이 담을 수 있습니다. 따라서 바이트 단위 데이터 처리나 이미지·파일 데이터를 다룰 때 unsigned char가 자주 활용됩니다.
정리
unsigned char는 8비트 크기의 부호 없는 문자형으로, 0에서 255까지의 값을 저장할 수 있어 확장 ASCII 표현에 적합합니다. 반면 signed char는 -128에서 +127까지의 값을 가지며, 음수가 필요 없는 바이트 데이터 처리에는 unsigned char를 사용하는 것이 좋습니다.