컴퓨터 공학 기초

후후니·2021년 9월 10일
0

문자열 하나는 몇 바이트일까?

기본적으로는 1바이트라고 생각하기 쉽다. 그러나 현재는 유니코드를 사용해야 텍스트를 정확하게 저장할 수 있다.
프로그래밍 언어마다 문자열을 저장하는 자료형이 다 다르므로,
이에 대한 답변은 이 자료형이 차지고하고 있는 바이트를 이해할 때 답변할 수 있다.

유니코드가 뭐예요?

유니코드는 유니코드 협회가 제정하는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설꼐된 산업 표준이다.

유니코드가 탄생하기 전에는, 같은 한글이 적힌 텍스트 파일이라도 표현하는 방법이 제각각이었다.
어떤 파일이 지원하지 않는 다른 인코딩 형식으로 저장되어 있는 경우에는 파일을 제대로 불러올 수 없었다.
기본적으로 유니코드의 목적은 현존하는 문자 인코딩 방법을 모두 유니코드롤 교체하는 것이다.

인코딩이란?

어떤 문자난 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것.

UTF-8 과 UTF-16의 차이점은?

UTF-8 특징 : 가변 길이 인코딩

URF-8은 유니코드 한 문자를 나타내기 위해 1byte(=8 bits)에서 4 bytes까지 사용한다.

  • 원리
    예를 들어 "코"라는 문자의 유니코드는 U+CF54 (16진수, HEX)로 표현됩니다. 이 문자를 이진법(binary number)으로 표시하면, 1100-1111-0101-0100 이 됩니다. 이 문자를 UTF-8로 표현하면, 다음과 같이 3byte 의 결과로 표현됩니다.

UTF-8 특징 : 바이트 순서가 고정됨

URF-16에 비해 바이트 순서를 따지지 않고, 순서가 정해져 있다.

UTF-16 특징 : 코드 그대로 바이트로 표현가능, 바이트 순서가 다양함

UTF-16은 유니코드 코드 대부분 (U+0000부터 U+FFFF; BMP) 을 16 bits로 표현한다.

  • 대부분에 속하지 않는 기타문자는 32bit(4 bytes)로 표현하므로 UTF-16도 가변 길이라고 할 수 있으나, 대부분은 2바이트로 표현한다.

U+ABCD라는 16진수를 있는 그대로 이진법으로 변환하면 1010-1011-1100-1101 입니다. 이 이진법으로 표현된 문자를 16 bits(2 bytes)로 그대로 사용하며, 바이트 순서(엔디언)에 따라 UTF-16의 종류도 달라집니다.

UTF-8에서는 한글은 3 바이트, UTF-16에서는 2 바이트를 차지합니다.

그래픽

profile
주니어 프론트엔드

0개의 댓글