컴퓨터 문자를 표현하려면?

문자 표현

이전 Programming 기초에서 보면 컴퓨터는 2진수으로 수를 표현하고 사용을 합니다. 또한 여러 진법 변환에 의해서 사람이 사용하는 10진수를 표현하고 사용을 할 수가 있었습니다.

하지만 현재 컴퓨터를 보면 사람들이 사용하는 글을 사용하고 프로그래밍에서 당연히 사람의 언어를 입력을 받거나 출력을 하게 됩니다. 어떻게 이것이 가능 할까요? 

저 또한 처음 시작할 때 뭔가 당연히 되는 것으로 생각을 했지만 공부를 하다 보니 진법이나 진수를 알면서 글자가 표현 되는 것을 상당히 궁금해 했던 것 같습니다. 

그럼 2진수 밖에 못 사용하는 컴퓨터에서 어떻게 사람이 사용하는 글자를 사용을 할 수 있는지 저는 알게 됐습니다.

여러분도 이 글을 끝까지 읽는다면 컴퓨터가 어떻게 사람의 언어를 지금처럼 자유롭게 사용을 할 수 있는지 알 수 있습니다. 

사람의 언어를 표현을 할 수 있는 코드표가 존재를 합니다. 코드표에 의해서 지금 저희가 사용하고 있는 컴퓨터는 한글이나 영어를 표현을 할 수가 있는 것입니다.

코드표는 대표적으로 아스키코드, 유니코드, UTF-8이 존재합니다. 이 글을 읽어서 코드표에 의해서 글자를 사용을 하는 방법을 이해를 하실 수 있습니다.

컴퓨터의 문자 사용 방법

컴퓨터는 우선 강조 드리지만 0과 1 밖에 사용만 할 수 있습니다. 하지만 진법 변환에 의해서 10진수, 8진수, 16진수 표현은 당연히 가능합니다.

그 숫자만 사용을 할 수 있는데 그래서 코드표를 만들어서 인코딩과 디코딩의 과정을 거쳐서 문자를 사용하게 됩니다. 

  1. 인코딩 과정은 문자를 받아서 코드표를 보고 숫자로 바꿔주는 과정을 말합니다. 숫자로 바뀐 값을 메모리에 저장을 해서 가지고 있게 됩니다.
  2. 디코딩 과정 사람의 요청에 의해서 메모리에 저장된 값을 호출을 하게 되면 현재 메모리에는 숫자이지만 처음에 문자로 입력해서 넣었기 때문에 그 숫자를 가지고 코드표를 확인해서 문자로 바꿔서 표현을 하게 됩니다.

위 사진처럼 일련의 과정을 거치면서 동작을 하기 때문에 사람의 입장에서 문자를 편하게 사용을 할 수 있습니다.

프로그램 구현 시 문자 주의 사항

프로그램을 구현 시에 유의를 할 점 있다. 영어를 쓰는 경우에는 굳이 코드표에 대해서 신경을 쓸 필요가 없지만 영어 이외의 언어를 사용을 할 때는 코드표의 설정이 상당히 중요합니다. 

예를 들어 구현을 할 때는 A코드표를 사용하고 출력 시에는 B코드표를 사용을 한다면 코드표의 값이 일치하지 않기 때문에 문자의 이상한 값이 출력이 되는 현상을 종종 볼 수가 있습니다.

저 같은 경우에도 한글을 쓰다 보니 이런 문자의 깨짐 현상이 생겨서 고생한 기억이 있습니다. 그래서 프로그램을 만들기 전에 꼭 코드표의 설정을 똑같이 맞춰주고 개발을 하셔야 합니다.

※ 코드표가 자세히 무엇인지 는 그렇게 크게 중요하지 않고 좀 전에 말한 아스키코드, 유니코드, UTF-8만 알고 있고 한글 같은 경우 UTF-8을 많이 설정해서 사용을 합니다.

아스키코드

아스키코드에 대한 내용을 아래  단어를 클릭해서 사이트에서 확인을 해보시면 됩니다.

아스키코드 설명

아스키코드 표

유니코드

유니코드에 대한 내용을 아래 단어를 클릭해서 사이트에서 확인을 해보시면 됩니다.

유니코드 설명

유니코드 표

UTF-8

UTF-8에 대한 내용을 아래 단어를 클릭해서 사이트에서 확인을 해보시면 됩니다.

UTF-8 설명

UTF-8 표

Dolphin

Recent Posts

Java 총정리[97. Java GUI]

Java GUI Java GUI에 대해서 이번 걸음에서 배움으로써 GUI에 전반적인 지식과 Java GUI를 구현하는 방법…

7개월 ago

Java 총정리[96. Java TCP 통신 프로그램 구현]

Java TCP 통신 프로그램 구현 Java TCP 통신 프로그램 구현을 위해서 이전 걸음에서 쓰레드에 대한…

7개월 ago

Java 총정리[95.쓰레드 통신]

쓰레드 통신 이전 걸음에서 쓰레드의 임계영역에 대해서 같이 공부를 했습니다. 동기화에 대한 개념을 계속적으로 하고…

7개월 ago

Java 총 정리[94. 쓰레드 임계영역]

쓰레드 임계영역 이전 걸음에서 쓰레드의 동기화에 대해서 같이 공부를 했습니다. 동기화에 대한 전반적인 내용을 공부하고…

8개월 ago

Java 총 정리[93. 쓰레드 동기화]

쓰레드 동기화 이전 걸음에서 계속 쓰레드에 대해서 공부를 하고 있습니다. 쓰레드는 상당히 중요한 개념이기 때문에…

8개월 ago

Java 총 정리[92. 쓰레드 join()]

쓰레드 join() 이전 걸음에서 쓰레드의 전반적인 실행 흐름에 대해서 공부를 했습니다. 이제 배운 실행 흐름…

8개월 ago

This website uses cookies.