기록하는삶
[CS/컴퓨터 구조] 컴퓨터의 숫자와 문자 표현, 부동소수점, ASCII, 유니코드 본문
본문에 첨부하는 내용과 이미지의 상당 부분은 유튜브 CrashCourse의 컴퓨터 과학 특강을 참고하였음을 밝힙니다.
컴퓨터는 모든 정보를 0,1로 표현하고 그 한 자리를 'bit'라 칭한다. 8bit = 1 byte로 데이터의 양을 나타내는 기본 단위가 되고, 초기 컴퓨터들은 0~255를 나타낼 수 있는 이 8bit를 데이터 저장의 최소 단위로 하는 경우가 많았지만, 현대에는 32bit를 거쳐 64bit가 대부분이다. 64bit로 표현할 수 있는 정수의 최대가 약 920경이라고 하니, 적어도 아직까지는 현실 세계에서 필요한 모든 숫자를 다룰 수 있을만큼 커다란 그릇이라 봐도 무방하다.
컴퓨터가 정수를 저장할 때는 맨 앞 bit로 부호를 표현하고, 나머지로 수의 크기를 표현한다. 실수를 표현하는 방법에는 여러가지가 있는데, 가장 대표적인 방법이 IEEE 754이다.
위는 32bit 기준의 표현법이고, 64bit에서는 11개의 bit를 지수부(exponent)에, 52개의 bit를 유효숫자(significant)를 나타내는데 사용한다. 이러한 방법은 소숫점의 위치를 고정한 채 실수를 표현하기 때문에, 부동소수점이라 불리며 컴퓨터에서의 큰 실수 연산 시 오차가 발생하는 원인이 되기도 한다.
문자의 경우 사전식으로 특정 숫자와 문자를 맵핑하여 표현하였다. 7bit를 활용한 아스키코드(ASCII)가 대표적인 예이며, 아래의 예 뿐만 아니라 문장 부호, 줄바꿈, 숫자와 특수 문자 등이 포함됐다.
다만 7bit의 128개 표현으로는 영어 외에 다른 문자를 표현하기 어려웠고 extended ASCII가 128개의 추가적인 표현을 사용했지만 이 역시도 세계의 많은 문자를 표현하기엔 부족했고, 전 세계적으로 통일된 인코딩 방법이 필요했다. 이에 등장한 것이 1992년 제정된 국제 문자 코드 규약인 유니코드(unicode)다.
유니코드는 16bit의 백만 개가 넘는 공간을 활용해(2**16) 100가지가 넘는 종류의 문자 12만 개 이상을 표현할 수 있다. 문자들 외에도 수학적인 기호와 이모지 등도 포함돼있고, 여전히 추가될 문자들을 위해 남겨놓은 공간도 존재한다. 이 중 한글은 "초성 19 × 중성 21 × 종성 28 = 11,172"의 공간으로 표현된다.(16bit 기준 AC00부터 D7A3 까지)
'CS(Computer Science)' 카테고리의 다른 글
[CS/컴퓨터구조] 프로세스와 쓰레드, 파이썬의 병렬 처리 (1) | 2023.03.15 |
---|---|
[CS/컴퓨터 구조] C언어 컴파일 과정 (0) | 2023.03.09 |
[CS/컴퓨터 구조] ALU의 기본 구조, input과 output (0) | 2022.03.20 |
[CS/컴퓨터 구조] 논리 회로의 기초, Not/And/Or/Xor Gate (0) | 2022.03.09 |
[CS/컴퓨터 구조] 계전기와 삼극 진공관, 트랜지스터 (0) | 2022.03.09 |