티스토리 뷰
주어진 학습목표를 이루기 위해서 이해를 우선으로 두고 공부할 것이다.
들어가기 전에 학습목표, 핵심단어는 강의 자료를 가져올 것이고 그 이후로는 내가 이해하고 공부한 부분을 직접 적고, 마지막에는 배운 점이나 느낀 점을 적도록 하겠다.
들어가기 전에
우리는 컴퓨터를 통해 다양한 정보를 처리합니다. 간단한 숫자부터 시작해서, 문자, 사진, 영상, 음악까지. 정보를 표현하는 형태는 매우 많습니다. 컴퓨터는 어떻게 이런 다양한 정보를 처리할 수 있을까요?
학습 목표
컴퓨터가 문자, 사진, 영상, 음악 등 다양한 정보를 처리하는 방식을 설명할 수 있습니다.
핵심 단어
- ASCII
- 유니코드
- RGB
ASCII
지금까지는 숫자를 표현하는 방법만 배웠다. 그렇다면 컴퓨터는 어떻게 문자나 이메일을 보내고, 수정하고, 작성할 수 있는 걸까?
알파벳 'A'를 컴퓨터가 입력받으려면?
역시 숫자로 표현할 수 있다. 가령 우리가 A= 1이라고 지정(약속)하면 되는 것이다.
실제로 컴퓨터에서 A= 65⁴를 의미한다. 이는 10진법 기준이므로 2진법으로 표현하면
2⁶x1 + 2⁵x0 + 2⁴x0 + 2 ³x0 + 2 ²x0 + 2 ¹x0 + 1x1 = (64+1) > 1000001 이 된다.
이렇게 알파벳뿐만 아니라 문장부호까지 숫자로 표현할 수 있도록 정해져 있는데 이는 ASCII라는 표준체계 덕분이다.
ASCII는 정보교환을 위한 미준 표준코드로 총 128개의 부호로 정의되어 있는데 가령 알파벳 A는 65, B는 66... I는 73으로 되어있다.
ASCII의 한계 > 유니코드(Unicode)의 등장
기본 ASCII는 7비트만 이용해 모든 문자들을 나타낸다. 이는 ASCII코드로 2⁷ = 128개의 문자를 나타낼 수 있다는 뜻이다.
확장 ASCII는 8번째 비트를 추가해 총 256개의 문자를 나타낼 수 있도록 한다.
HI! 는 72 73 33으로 나타낼 수 있다.
하지만 지금은 그보다 더 많은 문자가 표현되고 있다. 😀😆🤣 이런 이모지는 어떻게 표현될까?
이렇게 훨씬 더 많은 문자, 기호들을 포함하기 위해 나온 게 유니코드(Unicode)이다.
그래서 만약 친구에게 😂 하나를 보냈다면 10진법으로 128,514 > 2진법으로는 11111011000000010을
이렇듯 유니코드는 100만 개 이상의 문자들을 나타낼 수 있는 문자 인코딩 표준이다. 유니코드의 첫 128개의 문자는 ASCII와 동일하므로 혼동될 일은 없겠다.
RGB
문자와 같이 그림도 숫자로 표현할 수 있다. 우리는 사진이 작은 픽셀들로 이루어져 있다는 것을 알고 있다. 😀 이러한 이모지도 수많은 노란색 점들로 이루어진 결과물이다.
컴퓨터는 이 점(픽셀)들을 RGB라고 불리는 체계에 의해 표현한다. 빨간색, 초록색, 파란색이 세 가지의 조합으로 항상 나타난다.
빨강 72 , 초록 72, 파랑 33을 섞으면 노란색이 된다. 컴퓨터는 이 패턴을 위에서처럼 HI!로 표현하는 대신 각 색의 수치(얼마만큼 들어갔는지)로 받아들여와 노란색이 만들어지게 되는 것이다.
영상 또한 같은 파일에 저장되어있는 여러 장의 사진들을 합한 것이다. GIF를 생각하면 실제로 움직이고 있는 것이 아닌, 수많은 사진이 합쳐진 것이라는 것을 알 것이다.
동영상 또한 우리의 눈을 매우 빠르게 지나치는 여러 장의 사진들의 조합일 뿐이다.
이것들이 우리가 오늘날 컴퓨터에서 정보를 표현하는 거의 모든 방법이다.
0과 1을 이용해서 2진수를 나타내고 이를 통해 10진수를 나타내고,
이 10진수를 사용하여 화면 상의 글자나 색을 나타내고 나아가 영상까지 만들어낸다.
음악 또한 음표들을 숫자로 양자화시킬 수 있다. 음과 길이 음량 3가지 값을 숫자로 정보에 저장한다.
생각해보기
1) CS50을 2진법으로 표현해보세요.
C => 67 = 2⁶x1 + 2⁵x0 + 2⁴x0 + 2 ³x0 + 2 ²x0 + 2 ¹x1 + 1x1 = (64+2+1) > 01000011
S => 83 = 2⁶x1 + 2⁵x0 + 2⁴x1 + 2 ³x0 + 2 ²x0 + 2 ¹x1 + 1x1 = (64+16+2+1) > 01010011
50 => 2⁶x0+ 2⁵x1 + 2⁴x1 + 2 ³x0 + 2 ²x0+ 2 ¹x1 + 1x0 = (32+16+2) > 00110010
=> 01000011 01010011 00110010
지난 포스팅에서 썼듯이 보통 앞에 0을 붙여 표현한다고 해서 계산 후 0을 넣어줬다.
생각해보기 과정에서 CS50을 바꿀 때 문자를 아스키코드로 변환하고, 이를 2진수로 바꿔 표현하는 게 재밌었다.
알고리즘을 풀며 처음 알게 된 아스키코드가 왜 생겨났고, 어떻게 컴퓨터가 이를 받아들이는지 알게 되어 좋았다.
또한 확장된 문자를 표현하기 위해 유니코드가 생성되었고 그게 내가 많이 사용하는 😀 이러한 이모지도 포함되어있다는 것을 알았다.
색을 표현할 때는 컴퓨터가 색 표현의 수치를 문자로 이해하는 것이 아닌 숫자 그대로를 빨, 초, 파의 양(수치)대로 받아들여 조합된 색이 나온다는 점도 흥미로웠다.
이번 강의를 보고 나서 느낀 점은 결국 어떤 방법을 사용해서 정보를 나타내든 결국 0과 1들로 표현될 수 있다는 것이다.
Reference : CS50
'CS (Computer science)' 카테고리의 다른 글
[CS50 | 모두를 위한 컴퓨터 과학] C - 문자열 (0) | 2022.04.05 |
---|---|
[CS50 | 모두를 위한 컴퓨터 과학] C - C기초 (0) | 2022.04.02 |
[CS50 | 모두를 위한 컴퓨터 과학] 컴퓨팅사고 - 스크래치(기초,심화) (0) | 2022.04.01 |
[CS50 | 모두를 위한 컴퓨터 과학] 컴퓨팅사고 - 알고리즘 (0) | 2022.03.31 |
[CS50 | 모두를 위한 컴퓨터 과학] 컴퓨팅사고 - 2진법 (0) | 2022.03.29 |
- Total
- Today
- Yesterday
- 자바스크립트
- 실전프로젝트
- css
- reactquery
- python
- 무한스크롤
- 리액트네이티브
- 백준
- 프로그래머스
- 네트워크
- cs50
- 프로그래머스 베스트앨범 자바스크립트
- github
- 클로저
- 자바스크립트 클로저
- html
- 자바스크립트알고리즘
- 모두를위한컴퓨터과학
- network
- 항해99
- 알고리즘자바스크립트
- 프로그래머스 자바스크립트
- React Query
- javascript
- GIT
- 자바스크립트 비동기 처리
- 타입스크립트
- React
- 리액트
- 모두를 위한 컴퓨터 과학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |