본문 바로가기
Programming/1. boostcourse - 'CS50'

Ep 2-1. 컴퓨팅 사고_2진법

by @sangseophwang 2021. 4. 7.

@Unsplash

CS50 강의 시작!

 드디어 기록 겸 복습용 글을 써보고자 한다. 그 첫번째로 시작한 강의는 2진법이다. 우선 2진법에 대해 설명하기에 앞서 강의에서는 컴퓨터 과학의 정의에 대한 이야기를 하는데, 교수님께서 말씀하신 내용은 다음과 같다.

 

"컴퓨터 과학은 단지 문제를 해결하는 과정을 배우는 학문이다."

 

 여기서 문제 해결이란 입력(input)을 전달받아 출력(output)을 만들어내는 과정이며, 그 중간에 있는 과정이 컴퓨터 과학이라고 설명한다. 

 

단지 문제를 해결하는 과정, 참 쉬운 정의같다.

 그리고 이러한 입력과 출력을 표현하기 위해서는 어떠한 표준(약속)이 필요한데, 그것이 바로 2진법이다.

 

 컴퓨터는 전기적 소자인 트랜지스터로 자료값을 저장하므로 전기가 흐르거나(on) 흐르지 않는(off) 두 가지 신호만으로 자료를 처리하고 저장한다. 이와 같이 디지털 신호에서는 전기가 흐를 경우 참(true) 을 의미하는 1, 흐르지 않을 경우 거짓(false)의 0으로 표현된다. 0과 1, 이 두가지 수로 이루어진 진법이 바로 2진법이다.

 

2진법과 비트, 바이트

백이십삼

 우리는 평소에 0부터 9까지 총 10개의 기호로 표현하는 10진법을 사용한다. 위에 123이라는 숫자를 우리는 '백이십삼' 이라고 읽는다. 우리가 '백이십삼'으로 읽는 이유는 1을 백의자리, 2를 십의자리, 3을 일의자리로 보기 때문이다. 이것을 표현하면 '1x100 + 2x10 + 3x1 = 123'이 된다. 우리 모두는 이런 과정을 아주 당연하게 여기는데, 왜냐하면 우리 모두 이러한 표현에 대한 약속이 있기 때문이다. 우리는 이 약속에서 자리수를 10의 거듭제곱으로 표현했다. 비슷하게 2진법에서는 두 개의 숫자만 있으므로 각 자리수가 2의 거듭제곱을 의미한다.

 

두 진법을 간단히 비교해보자면 다음과 같다.
이 숫자는 10진법으로 바꾸면 어떤 숫자가 될까?

 그럼 이 방법으로 10진법의 3을 2진법으로 표현하면 어떻게 될까? 바로 11이다. 표를 보면 2진법에서는 두 번째 자리는 2¹로 2이고, 따라서 2진법에서 11은 2¹x1 + 1x1 =3이다. 마찬가지로 2진법에서 100은 2²x1 + 2¹x0 + 1x0 =4이다.

 

 컴퓨터에서는 이 2진법에서 하나의 자릿수를 표현하는 단위를 비트(bit) 라고 한다. 이진 숫자라는 뜻을 가진 'binary digit' 의 줄임말이며 정보 처리 단위 중에서 가장 작은 단위를 말한다. 이 비트가 8개가 모이면 우리가 파일 용량을 확인할 때 주로 보던 단위인 바이트(byte)가 된다. 1바이트는 8개의 비트를 조합하므로 총 2^8=256가지의 정보를 저장할 수 있다. 이러한 바이트가 더 모이면 다음과 같은 단위로 바뀐다.

 

0,1 밖에 못하는 비트가 모이면 심슨 가족 열 여섯 시즌도 될 수 있다.

 

반응형

'Programming > 1. boostcourse - 'CS50'' 카테고리의 다른 글

Ep 3-2. 문자열  (1) 2021.04.07
Ep 3-1. C언어 기초  (0) 2021.04.07
Ep 2-3. 컴퓨팅 사고_Scratch  (0) 2021.04.07
Ep 2-2. 컴퓨팅 사고_정보의 표현, 알고리즘  (0) 2021.04.07
Ep 1. boostcourse?  (0) 2021.04.06

댓글