본문 바로가기

Programming/온라인 교육

[CS50 2019] 2진법, 정보의 표현

반응형

컴퓨터 과학(Computer Science)은 문제를 해결하는 과정이다.

어떠한 입력(input)이 있고, 입력에 따른 결과(output)가 있다. 그리고 입력과 출력의 사이에 컴퓨터 과학이 존재한다. 즉 어떠한 문제(입력)가 있고, 문제에 대한 해결 과정 후에 문제의 답(결과)이 도출된다.

 

문제 해결에 앞서, 입력과 출력을 어떻게 표현할지에 대한 합의된 표현 방식의 사용이 필요하다. 

 

2진법

컴퓨터는 0과 1로만 데이터를 표현하는 2진법으로 대화한다. 일반적으로 사용하는 10진법(0, 1, 2, 3, 4, 5, 6, 7, 8, 9 총 10개의 기호로 표현하는 것)과는 상반된다.

 

컴퓨터는 0과 1만으로 글자, 사진, 영상, 소리 등 다양한 것들을 저장할 수 있다.

 

2진법에서 각 자리수는 2의 거듭제곱을 의미한다. 아래 이미지와 같이 오른쪽-왼쪽 방향으로 각 자리수마다 2의 거듭제곱을 한다.

 

 

10진수(Decimal) 2진수(Binary)
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
... ...

 

위의 표에 정리된 것처럼 컴퓨터는 2진수를 통해 현실 세계의 숫자를 0과 1만 사용한 패턴으로 저장한다.

2진법의 사용은 전기가 유일한 입력인, 전기를 ON/OFF 하는 방식으로 작동하는 컴퓨터에 적용하기 적합하다. 

 

비트

정보를 저장하고 연산을 수행하기 위해 컴퓨터는 비트(bit)라는 측정 단위를 사용한다. 비트는 이진 숫자라는 뜻을 가진 “binary digit”의 줄임말이며, 0과 1, 두 가지 값만 가질 수 있는 측정 단위이다. 디지털 데이터를 여러 비트들로 나타냄으로써 두 가지 값만을 가지고도 많은 양의 정보를 저장할 수 있다. 또한 컴퓨터는 저장되어 있는 데이터를 수정하기 위해 비트에 수학적 연산을 수행할 수 있다.

 

바이트

비트 한 개는 많은 양의 데이터를 나타내기에 부족하기 때문에 여러 숫자 조합을 컴퓨터에 나타내려면 바이트(byte) 단위를 사용한다. 바이트는 8비트, 8개의 0과 1을 의미하는 비트의 확장된 단위이다. 즉 2^8 = 256개의 서로 다른 바이트가 존재할 수 있다.

 

정보의 표현

0과 1로된 데이터만 저장하는 컴퓨터로 문자를 표현하려면 문자를 숫자로 표현 할 수 있는 정해진 표준을 따라야 한다. 그 중 하나는 아스키(ASCII)이다. 아스키는 문자를 컴퓨터가 이해할 수 있는 이진 데이터(0 또는 1) 혹은 그 반대로 변환하는 표준 방법이다.

 

아래 이미지는 알파벳 대문자와 소문자를 표현하는 아스키코드를 보여준다.

숫자 65는 대문자 'A'와 대응된다. 따라서 컴퓨터가 대문자 'A'를 저장하고 싶다면 숫자 65를 이진수로 저장한다.(2진수로 나타내면 1000001)

 

* ASCII에서 소문자는 같은 대문자 글자보다 항상 2^5만큼 크다.

http://bcazoneeducation.blogspot.com/

기본 ASCII는 7비트만 이용해서 모든 문자들을 나타낸다. 2^7 즉 128개의 문자를 나타낼 수 있다. 확장 ASCII는 8번째 비트를 추가해서 총 256개의 문자를 나타낼 수 있다. 

현재 사용되는 문자의 개수가 256개보다 많기 때문에 더 많은 문자들을 포함할 수 있는 유니코드(Unicode)가 등장했다. 유니코드는 100만개 이상의 문자들을 나타낼 수 있는 문자 인코딩 표준이다. 유니코드의 첫 128개의 문자는 ASCII의 128개 문자와 동일하므로 서로 호환이 된다.

 

유니코드를 사용하면 😂(기쁨의 눈물) 이모티콘도 표현할 수 있다. 이 이모티콘은 10진법으로 128,514이고, 2진법으로 11111011000000010 이다.

만약 누군가가 친구에게 😂(기쁨의 눈물) 이모티콘을 보내면 11111011000000010 이라는 패턴을 보낸 것이다. 상대방의 스마트폰은 0과 1의 패턴을 받아서 해당하는 이모티콘을 보여준다.

 

위에서 살펴본 문자 뿐만이 아니라 그림, 영상, 음악 또한 숫자로 표현되고, 그 숫자를 컴퓨터가 인식하여 우리가 인식할 수 있는 그림, 영상, 음악으로 나타난다.

 

https://www.boostcourse.org/cs112/lecture/118997/?isDesc=false 

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

반응형

'Programming > 온라인 교육' 카테고리의 다른 글

[CS50] 메모리  (0) 2021.12.06
[CS50] 알고리즘  (0) 2021.12.03
[CS50] 문자열  (0) 2021.12.02
[CS50] 컴파일링  (0) 2021.12.02
[CS50] C언어  (0) 2021.11.30