공부/JUN STUDY

ASCII 코드란? (컴퓨터가 표현할 수 없는 정보를 컴퓨터에 저장하는 방법)

JUNFUTURE 2022. 10. 22. 16:49

ASCII 코드의 등장이유

ASCII 코드는 컴퓨터가 표현할 수 없는 정보를 컴퓨터에 저장하는 방법

고민하다가 등장한 개념이다.

 

우선 이해하면 좋을 전제가

컴퓨터는 오로지 숫자(이진수 형태) 밖에 저장할 수 없다.

이다.

 

컴퓨터를 통해서 문자를 저장하고 싶은데
컴퓨터는 오로지 숫자밖에 저장할 수 없으니

 

문자를 나타내기로 약속한 숫자들을 정해놓은 것이고
그 숫자(코드)들을 바로 ASCII 코드라고 한다.

 

표현 : A의 ASCII 코드 값은 65이다.

위에 보이는 사진에 나타난 개념과 쓰임새가 전부다.
아스키 코드에 나타난 10진수 16진수 이런 부분에 고민할 필요가 없다.

이때 ASCII 코드 표에 1번부터 ~번까지 문자가 아닌 것들이 등장하는 부분이 있는데

이건 문자가 아니라 특정히 약속된 상황들(SPACE, ESC...)에 대한 코드 값들이다.

 

컴퓨터 내부에서 아, 지금 ESC가 눌린 상황이구나. 아, 지금 SPACE가 눌린 상황이구나

하는 것을 알아야하기에 해당 상황에 대한 코드도 적혀있다.

 

ASCII 코드의 등장이유가 

컴퓨터가 표현할 수 없는 정보를 컴퓨터에 저장하는 방법

고민하다가 등장한 개념이라는 것을 되새기자.

 

(물론 주 목적은 문자를 저장하기 위함이지만

엄밀히 이야기하면 좀 더 일반적인 개념이 담겨져 있다.)

 

ASCII 코드의 사용법

어떻게 컴퓨터가 숫자를 문자로 인식할 수 있게할까?

결론은 서식 지정자(%c)를 사용하면된다.

 

추상적이니 조금 더 구체적으로,

어떻게 컴퓨터가 숫자를 문자로 인식하여 출력하게 할 수 있을까?

printf("%c", 'A'); // A
printf("%c", 65); // A

위의 코드를 실행해보자.

둘 다 A가 화면에 출력되는 것을 확인할 수 있다.

 

사실은 '컴퓨터에 문자를 저장한다'라는 행위는

지극히 인간을 위한 것이다.

 

컴퓨터에 문자를 저장하는 이유는 결국

내가 넣어놨던 그 문자를 다시 '보고싶기' 때문이다.

 

무슨 말이 하고싶냐면 결국 우리가 문자냐 정수냐 실수냐 하는 논의들은

우리가 컴퓨터 메모리 안에 저장되어있는 값을

꺼내어 비로소 눈으로 확인할때에만 오로지 의미가 있는 이야기이다.

 

컴퓨터는 저장된 값을 문자로 인식할 필요도, 실수로 인식할 필요도 없다.

그저 인간에게 꺼내어 보여줄때 문자 형태로, 실수 형태로 출력해줄 뿐이다.

 

당연히 ASCII 코드의 사용과 컴퓨터가 저장할 수 없는 문자에 대한 표현은

전적으로 인간을 위해 출력 하는 시점에만 고려되어야할 문제이기에

출력시에 사용되는 서식 지정자와 깊은 관련이 있다.

 

여담

아무래도 ASCII 코드의 개념 이해로 부터 파생되는 이야기들이 있어

간략히 소개하고 넘어가보려고 한다.

 

유니코드

아스키 코드표의 크기는 1Byte(256개의 경우의 수)이다.

따라서 256개의 정보에 대한 코드만 담겨있다.

 

만약 표현하고싶은 문자나 정보가 256개가 넘는다면

당연히 아스키 코드를 이용해 표현하면 저장할 수 없다.

 

그래서 등장한 개념이 유니코드다.

 

자료형

컴퓨터에는 2진법 형태의 숫자(비트)밖에 저장할 수 없기에

'컴퓨터에 저장된 숫자들을 어떻게 읽을 것인가?' 하는 이야기이다.

비트는 우리가 의미를 부여한 순간에어서야 비로소 의미를 갖는다.