컴퓨터는 모든 데이터를 0과 1로 바꿔서 저장하고 인식한다. 컴퓨터 같은 기계장치들은 0과 1만 이해 할 수 있도록 설계 되어 있다. 컴퓨터 전원이 꺼져도 전류가 흐르거나 흐르지 않는 상태를 유지할 수 있고 흐르면 1, 흐르지 않으면 0으로 정해서 현실 세계의 모든 데이터를 0과 1로 바꿔 기계장치(하드디스크, 램 등)에 저장할 수 있게 되었다.
자 그렇다면 알파벳 a 는 어떻게 저장하면 될까? a 를 0과 1로 나타낼 어떤 규칙이 필요하다. b와 c도 마찬가지이다. 이 규칙을 아스키(ASCII, American Standard Code for Information Interchange) 코드 라고 한다. 이 규칙에 따르면 알파벳(대, 소문자)과 숫자, 특수 기호 몇가지, 그리고 몇 가지 제어 문자들을 0과 1로 나타낼 수 있다.
여기서 이상한 점이 있는데, 8자리의 이진수를 사용한다고 했는데 표의 이진수는 일곱자리인 것을 확인할 수 있을 것이다. 그러면 한자리는 어디갔을까? 이 한자리는 패리티 비트(parity bit)라고 부르는데, 데이터의 에러를 탐지하기 위해 사용하는 공간이다.
이 일곱자리의 이진수에서 1이 홀수개라면 끝에 1을 덧붙이고, 짝수개라면 끝에 0을 덧붙인다. 그러면 아주 정밀하지는 않지만 패리티 비트를 이용해서 어느 정도 에러를 탐지할 수 있게 되는 것이다.
아스키 코드를 이용해 알파벳이 아닌 다른 언어를 표현하기에는 7비트로는 부족했다. 그래서 8비트로 확장한 아스키 코드가 등장했다. 하지만 비유럽 국가, 특히 한중일과 같은 문자가 많은 국가에서 아스키코드는 여전히 제한적이다. 그래서 유니코드라는 전세계 언어의 문자를 정의하기 위한 국제 표준 코드가 등장하게 되었다.
유니코드는 16진수로 이루어져 있으며 2바이트, 즉 16비트를 사용하여 216가지(65,536)를 표현할 수 있다. 시간이 지나가면서 영어나 숫자 그리고 기본적인 기호뿐만 아니라 그 나라, 그 언어에서 쓰는 다양한 문자들을 처리하려면 1바이트로 정의된 아스키 코드를 확장할 필요가 있게 되었다. 유니코드는 이런 아스키코드의 한계성을 해소할 수 있는 체계로 만들어진 코드이다. 유니코드는 사용중인 운영체제, 프로그램, 언어에 관계없이 문자마다 고유한 코드 값을 제공하는 새로운 개념의 코드이다. 언어와 상관없이 모든 문자를 16비트로 표현하므로 최대 65,536자까지 표현할 수 있다.
UTF-8은 가장 많이 사용되는 가변 길이 유니코드 인코딩이다. 인터넷 사이트에서 가장 많이 쓰이는 인코딩이다. 유니코드가 널리 쓰이기 전부터 형성된 인터넷 문서들은 대부분 아스키코드를 기본으로 해서 작성되었고, 특히 기존의 HTML 태그나 자바스크립트 등 아스키로 구축된 사이트를 별다른 변환처리 없이 그대로 쓸 수 있는 엄청난 장점이 있다. 지금은 일부 사이트를 제외하면 UTF-8로 옮겨가는 추세이며 관공서 사이트도 차츰 UTF-8 기반으로 바뀌고 있다.
'개발자였던 것 > JAVA 기초' 카테고리의 다른 글
반복문 (0) | 2020.03.05 |
---|---|
순서도 (0) | 2020.03.03 |
연산자 (산술/대입/증감/비교/논리/비트/삼항) (0) | 2020.03.03 |
자바의 자료형 정리 (상수/변수/자료형) (2) | 2020.03.02 |
개발자 기초 용어 (0) | 2020.03.02 |