본문 바로가기
Basic/C/C++

[C언어] 제 9 강 : 문자의 표현

by boxbop 2012. 1. 12.
반응형

 사실 컴퓨터는 바이너리코드 외에는 아무것도 모르는 상태입니다. 우리가 실제로 사용하는 영어나 한글같은 언어는 전혀 모르죠. 내부적으로는 모두 2진법을 사용하여 문자를 표현하는 것 뿐입니다. 오늘은 그러한 컴퓨터의 문자 표현방법을 알아보도록 하겠습니다^-^!!

 아스키코드(ASCll)?
사람은 언어를 사용하고 컴퓨터는 숫자를 사용합니다. 컴퓨터가 사람이 사용하는 언어를 사용하기 위해서는 숫자를 언어로 표현해주어야 하는데 이것을 정의한 표준이 아스키코드입니다. 예를들어 '문자 A를 표현할때는 숫자 65를 사용합니다!'라고 아스키 코드에서는 정의하고 있습니다.

 아스키코드 문자는 총 128개가 정의되어 있습니다. 컴퓨터는 2진법을 사용하므로 2의 7제곱이면 128이므로 7개의 비트만 있으면 모든 아스키코드를 표현할 수 있습니다.

 문자의 저장과 출력?
printf 문에서 살펴보았듯이 '문자열'은 큰 따옴표를, '문자'는 작은 따옴표를 이용해서 표현합니다.

 char text = 'A';
 printf("%d", text);

 위의 예제를 보시면 text에 저장된 변수가 문자'A'임에도 불구하고 printf문에서의 서식문자는 %d를 사용하였습니다. 원래는 문자기때문에 문자를 출력하는 서식문자 %c를 사용해야되지만 무슨일인걸까요? 위와 같은 예제도 컴파일 에러없이 정상적으로 작동합니다. 앞서 말씀드렸던 문자A의 아스키코드 값을 출력할 뿐 이죠. A의 아스키 코드값은 65이기 때문에 65가 출력이 되겠죠~

 이번에는 문자와 관련된 함수들에 대하여 알아보겠습니다.

 isdigit 함수 : 숫자인지 묻는다.
 isalpha 함수 : 알파벳인지 묻는다.
 islower 함수, isupper 함수 : 소문자인지 대문자인지 묻는다.

 예를들어서 간략하게 설명하도록 하겠습니다.

 char ch = '0';
 if(isdigit(ch)) printf("숫자 입니다\n");
 else printf("숫자가 아닙니다.\n");

변수 ch에는 숫자 0이아닌 작은 따옴표로 구성되어있는 문자 0이 저장되어있습니다. 따라서 isdigit 함수가 변수ch를 검사하여 숫자인지 판별합니다. 물론 문자이기때문에 거짓값 0을 반환하겠죠? 다른 함수들도 사용방법은 동일합니다. 단지 함수의 이름만 바뀌는 것 뿐이죠~ㅋㅋㅋㅋ 이처럼 C언어에는 사용자를 위해 정의되어 있는 함수가 많습니다. 다 외울수는 없지만 필요할때 찾아서 이요하면 아주 편리하죠~

 사실 이번강의가 문자의 표현이라고 했지만 딱히 아스키코드에 대하여 자세하게 설명한 것도 아니라 제목을 정하기 애매하네요.... 그냥 가볍게 듣고 지나치는 강의인가 봅니다...ㅎㅎㅎㅎㅎㅎ;;; 다음 강의에서는 메모리에 대하여 공부해보도록 하겠습니다~! 감사합니다^-^
반응형