티스토리 뷰

컴퓨터는 binary로 말한다.

즉 2진법, 0과 1밖에는 사용할 줄 모른다. 예를 들어 10진법으로 5인 숫자를 표현하기 위해서, 컴퓨터는 2진법 101로 표현한다. 이 2진법은 스위치를 끄고 키는 방식으로 표현될 수 있다. 즉 스위치를 켜면 1, 스위치를 끄면 0 이렇게 생각할 수 있다. 스위치를 키고 끄기 위해서는 전기가 필요하다. 전기가 들어오면 스위치가 켜지고 1을 나타내고, 전기가 다시 빠져나가면 스위치가 꺼지고 0을 나타낸다고 생각할 수 있다. 이것이 컴퓨터 안의 트랜지스터가 하는 일이다.

컴퓨터에서 0과 1로 2진법 한자리수를 나타내는 단위를 비트(bit)라고 한다. 즉 10진법 숫자 5는 2진법 101로 표현될 수 있고, 이는 3비트가 필요한 것이다.

그런데 커다란 데이터를 표현하기 위해서는 비트의 단위가 너무 작다. 그래서 다른 큰 단위들도 존재하는데, 예를 들어 8비트가 1바이트를 의미하고, 1000바이트는 1킬로바이트, 1000킬로바이트는 1메가바이트를 의미한다.

이렇게 컴퓨터가 숫자를 이진법으로 표현하는지는 알았는데, 알파벳 A와 같은 '문자'는 어떻게 표현할까? 컴퓨터는 0과 1로밖에 말할 줄 모르므로, 문자를 특정한 숫자로 표현하기로 약속하면 된다. 이 약속 중 미국 표준으로 사용되고 있는 것이 아스키코드(ASCII)이고, 아스키코드에서는 알파벳 A를 10진법 65로 나타내기로 약속했다. 즉 2진법 8비트로 나타내자면 01000001 인 것이다. (64+1)

하지만 아스키코드의 한계는 이름에서도 알 수 있듯이(ASCII, American Standard Code for Information Interchange) 미국 중심적이라는 것이다. 아스키코드는 알파벳을 표현하기 위해 8비트(1바이트)만 사용한다. 하지만 한국어같은 알파벳이랑 전혀 다른 문자를 표현하기 위한 약속도 필요하다. 한글은 2바이트를 사용하기 때문에 아스키코드로는 표현할 수 없다. 이를 위해 등장한 것이 유니코드이며, 아스키코드의 상위집합(superset)이다. 유니코드는 더 많은 문자를 표현하기 위해 8, 16, 24, 32비트까지 사용한다.

예를 들어 우리가 자주 사용하는 이모지도 그저 숫자로 약속된 것이다. 😂 이 이모지는 10진법으로 표현하면 128514이고, 2진법으로 나타내면 11111011000000010 이다. 즉 저 이모지 하나를 전송하는데 이미 17비트가 든다.

이모지뿐만 아니라 사진도 역시 0과 1로 이루어진 약속이다. 모든 컬러는 Red, Green, Blue 이 세가지 색을 조합해서 만들 수 있다. 그리고 사진은 작은 픽셀 (어떤 색깔을 가진 자그마한 네모)들로 이루어져 있다. 이 픽셀이 가진 색깔은 어차피 RGB의 어떤 값으로 표현될 것이다. 예를 들어 회색을 나타낼 때 rgb(122, 129, 137) 이런 식으로. 그리고 저 숫자들 역시! 컴퓨터는 2진법으로 말할 것이다.

그리고 GIF든, 영상이든 사실 굉장히 빠른 속도로 여러 장의 사진이 보여지고 있는 것이다. 아주 빠른 속도로 사진이 교체되기에 사람이 인식하기에 동적으로 움직이는 것처럼 인식되는 것이다. 그리고 아까 말했듯이 사진과 색깔 또한 이진법으로 표현될 수 있다. 즉, 컴퓨터는 0과 1만으로 이 모든 리소스를 표현한다.

'공부일지(TIL) > Others' 카테고리의 다른 글

[C언어] char과 string, 사용자 함수 만들기  (0) 2021.02.05
하드웨어의 한계  (0) 2021.01.22
HTML5로 카드 만들기 (with Canvas API)  (0) 2019.06.11
Design Patterns Intro  (0) 2019.05.17
Node File System Module  (0) 2019.04.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함