티스토리 뷰

반응형

 

CS공부로 'CODE'라는 책을 읽고 있는데 가면갈수록 책 내용이 나에게 어렵기도 하고, 더 잘 이해하고 싶은 마음에 찾아본 강의이다. 

정리도 잘 되어있고 무엇보다 한 강의당 15분 내외에서 하루에 한두 개씩 보며 공부하기 좋을 것 같아서 시작하게 되었다. 

물론 15분 강의여도 이해, 정리하고 찾아보고 하면 1시간이 넘는 것 같지만..

 

강의 내용만 그대로 베끼는 것이 아니라, 주어진 학습목표를 이루기 위해서 이해를 우선으로 두고 공부할 것이다.

들어가기 전에 학습목표, 핵심단어는 강의 자료를 가져올 것이고 그 이후로는 내가 이해하고 공부한 부분을 직접 적고, 마지막에는 배운 점이나 느낀 점을 적도록 하겠다. 

 

 


 

들어가기 전에

우리가 일상적으로 사용하는 컴퓨터는 어떤 원리로 작동될까요? 우리가 컴퓨터를 사용하여 해결하는 여러 일들은 어떻게 가능한 걸까요? 컴퓨터 과학이란 무엇이고, 컴퓨터가 작동하게 하기 위해 어떤 약속들이 필요한지 살펴보도록 하겠습니다.

 

학습 목표

컴퓨터 과학이 무엇인지 정의하고, 컴퓨터가 정보를 표현하는 방법에 대해 설명할 수 있습니다.

 

핵심 단어

  • 컴퓨터 과학
  • 2진법
  • 비트
  • 바이트

 


 

2진법

우리는 수를 셀 때 손으로 1부터 10까지 세는 것에 익숙하다. 우리는 10진수라는 수의 체계를 쓰고 있다 => 10진법

 

123을 읽어보면 '백이십삼'이라고 본능적으로 나온다.

이는 '1x100 + 2x10 + 3x1 = 123' 의 결과이고 

10 ²x1 + 10 ¹x2 + 1x3 = 123으로 표현될 수 있다. 이는 10진수의 체계를 쓴 결과이다.

 

같은 방식으로 2진법을 표현해보자. 

3을 2진법으로 표현하면 2 ¹x1 + 1x1 = 11 이 된다. 

 

이해를 위해 좀 더 바꿔보았다. 

 

3 = 2 ¹x0 + 1x0 = 0011 

4 = 2 ²x1+ 2 ¹x0 + 1x0 = 0100 

5 = 2 ²x1+ 2 ¹x0 + 1x = 0101

6 = 2 ²x1 + 2 ¹x1 + 1x0  = 0110

7 = 2 ²x1 + 2 ¹x1 + 1x1  = 0111

 

8을 2진법으로 표현하려면 하나의 자릿수가 더 필요하다.

8 = 2 ³x1 2 ¹x0+ 1x0   = 1000

 

이렇게 수를 표현하기 위해 더 많은 0과 1이 필요하게 되는데 우리는 이를 비트(bit)라 부른다.

 

** 2진수 앞의 0의 의미는 강의에서는 나오지 않은 내용이며 책 "CODE"에서 읽었던 내용이다. (CODE, p109)

보통 2진수를 사용할 때 앞의 자리에 0을 적는 경향이 있다고 한다. 

그래서 11은 0011과 같다. 

 

 

비트(bit)

컴퓨터에서 2진법을 하나의 자릿수로 표현하는 단위가 비트(bit)이다. 0, 1 두 가지 값만 가질 수 있는 측정 단위이다. 

 

스위치를 on/off상태를 0과 1로 단순하게 표현할 수 있다. 

이렇듯 2진법은 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게도 적합한 방식이 된다. 

 

물론 하나의 비트만으로는 모든 연산을 할 수는 없다.

만약 더 많은 연산이 필요하다면? 비트를 더 많이 쓰면 된다. 

 

bit  bit  bit  bit  bit  bit  bit  bit   

 

이렇게 8bit가 모일 수도 있다. 

이렇게 여덟 개의 비트가 모여 만들어진 것을 바이트(byte)라는 단위로 말 할 수 있다.

 

 

비트열 > 바이트(byte)

여덟 개의 비트가 모여 만들어진 것이다. 비트 하나는 0과 1로 표현될 수 있으므로 2^8 = 256개의 서로 다른 바이트가 존재할 수 있게 된다. 물론 바이트가 모이면 더 큰 단위가 된다. 

 1,000바이트는 킬로바이트(KB), 1000킬로바이트는 메가바이트(MB)라는 단위이다. 더 많은 단위는 아래의 표를 참고하자.

 

하나의 비트로는 어떤 값이 참, 거짓인지 ex) 노트북이 충전 중인지 or 아닌지 에 대한 정보만 컴퓨터에 저장할 수 있다. 

하나의 바이트로는 알파벳 한 개를 표시할 수 있다. 

이런 식으로 더 많은 비트들이 모여 더 큰 단위가 완성되고, 그 단위들로 할 수 있는 일들도 당연히 많아지게 된다. 

 

 


 

생각해보기


1) 5를 2진법으로 바꿔보면 어떻게 될까요?

>> 5 = 2 ²x1 + 2 ¹x0 + 1x1 = 101 이 된다.

 

CODE라는 책에 이에 대한 내용이 자세히 나와있다. 하지만 내가 이해한 정도는 어떻게 2진법으로 바꾸냐가 아니라

 

'단순히 수를 세기 가장 편한 방법은 손가락으로 세는 것이고, 사람은 10개의 손가락을 가지고 있기 때문에 사람에게는 자연스럽게 10진법에 익숙하고 그 수의 체계를 쓰고 있지만, 전원을 켜고 껴는 것부터 시작하는 컴퓨터에게는 1,0으로 이루어진 2진법이 익숙하다. 그리고 이를 우리는 비트라고 한다. '

 

라는 정도까지만 이해했는데 이번 공부를 통해서 어떻게 10진법의 수들을 2진법으로 바꾸고, 비트들이 모여 더 많은 단위를 만들어진다는 것을 알게 되었다.  

 

또 하나의 비트로 하나의 바이트로... 하나의 킬로바이트로 점점 단위가 확장될수록 참, 거짓만을 판별하던 하나의 비트에서 영화가 저장될 수 있을 정도로 할 수 있는 연산이 많아진다는 것을 알았다. 

 

 


 

Reference  CS50

반응형