모두를 위한 컴퓨터 과학(CS50 2019) 강의를 들으며 작성하였다.
컴퓨터과학이란 무엇인가?
문제를 해결하는 과정.
문제를 해결 : 어떠한 입력이 있을 때 그로부터 어떠한 출력을, 그 문제에 대한 답을 찾는 것
-> 이것의 중간 과정이 컴퓨터과학.
따라서 컴퓨터 과학의 첫 번째 개념은 정보 자체의 표현 방법.
1. 2진법 : 0과 1로만 표현하는 것
- 컴퓨터는 0과 1만으로 숫자 뿐만 아니라 글, 사진, 영상 소리 등을 저장 가능
- 2진법에서는 두 개의 숫자만 있으므로, 각 자리수가 2의 거듭제곱을 의미
- 2진법은 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게 적합한 방법
- 컴퓨터에게는 수많은 스위치(트랜지스터)가 있으며 on/off 상태를 통해 0과 1을 표현
- 트랜지스터 : 컴퓨터 속의 작은 스위치. 컴퓨터는 이 스위치를 수백개 가지고 있는데, 이들을 물리적으로 이용해서 정보를 표현하고 값을 저장함.
- 비트(bit) : 2진법에서 하나의 자릿수를 표현하는 단위. 0과 1, 두 가지 값만 가질 수 있는 측정 단위
디지털 데이터를 여러 비트들로 나타냄으로써 두 가지 값만을 가지고도 많은 양의 정보 저장 가능
- 비트열 : 하나의 비트는 0과 1 두 가지의 값만 저장할 수 있기 때문에, 많은 양의 데이터를 나타내기에는 부족함.
따라서 여러 숫자 조합을 컴퓨터에 나타내기 위해 비트열을 사용.
바이트(byte)는 여덟 개의 비트가 모여 만들어진 것. 하나의 바이트에 여덟 개의 비트가 있고, 비트 하나는 0과 1로 표현될 수 있기 때문에 2^8 = 256개의 서로 다른 비트 존재 가능. 바이트가 모이면 더 큰 단위가 될 수 있음.

2. 문자의 표현
- 컴퓨터가 문자를 숫자로 표현하기 위해, 정해진 약속(표준)이 있음.
- 그 중 하나가 바로 ASCII(아스키코드)
- 총 128개의 부호로 정의되어 있으며, 알파벳 A의 경우 10진수 기준으로 65로 되어있음

- 이 외에도 Unicode 라는 표준에서는, 더 많은 비트를 사용하여 더 다양한 문자들로 표현 가능하도록 지원
- 유니코드는 이모지까지 표현할 수 있게 해주었음
그림, 영상, 음악의 표현
- 문자와 마찬가지로 그림 역시 숫자로 표현 가능
- 스크린을 통해 보는 그림을 자세히 보면 작은 점들이 빨간색, 초록색, 파란색을 띄고 있는데 이 점들을 픽셀이라고 부른다. 각각의 픽셀은 세 가지 색을 서로 다른 비율로 조합하여 특정한 색을 갖게된다.
ex) 빨간색72, 초록색72, 파란색33을 섞으면 노란색이 됨
- 이 숫자들을 표현하는 방식을 RGB(Red,Green,Blue)라고 함.
- 즉 노란색의 이미지는 72 72 33 으로 정의되는 픽셀들의 RGB코드(숫자)로 표현 가능
- 영상 또한 수많은 그림을 빠르게 연속적으로 이어 붙여놓은 것이기 때문에 숫자로 표현 가능
- 음악 역시 각 음표를 숫자로 표현할 수 있음
3. 알고리즘
- 알고리즘 : 입력(input)에서 받은 자료를 출력(output) 형태로 만드는 처리 과정
입력값을 출력값의 형태로 바꾸기 위해 어던 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열
이러한 일련의 순서적 규칙들을 어떻게 나열하는지에 따라 알고리즘의 종류가 달라지며, 같은 출력값이라도 알고리즘에 따라 출력을 하기까지의 시간이 다를 수 있음. 알고리즘을 평가할 때는 정확성도 중요하지만 효율성(작업을 완료하기까지 얼마나 시간과 노력을 덜 들일 수 있는지)도 중요
- 의사코드 : 필요한 행동이나 조건을 잘 설정하여 컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 도와줌
- 함수(functions) : 무엇을 할지 알려주는 동사와 같다.
- 조건 : 여러 선택지 중 하나를 고르는 것(if, else if, else)
- 불리언(Boolean) : Yes(예) 또는 No(아니오) 혹은 True(참) 또는 False(거짓)으로 나오는, 아니면 2진법에서 0 또는 1로 나오는 질문
- 루프(loop) : 뭔가를 계속해서 반복하는 순환
* 생각해보기
친구와 1부터 100까지 숫자 중 1가지 숫자를 맞추는 스무고개 게임을 하려고 합니다. 이 때 사용할 알고리즘을 의사코드로 표현하면 어떻게 될까요?
1) 문제를 낼 사람(A)와 맞출 사람(B)를 정한다.
2) A는 1~100 사이의 수를 정한다.
3) B는 임의의 숫자를 고른다.
4) if B가 고른 숫자가 맞다면, 게임을 종료하고 A와 B의 역할을 바꾼다.
5) Else if A가 up/down 을 말한다.
6) if up 이라면 B가 숫자들의 중간값을 말한다.
4번으로 돌아간다.
7) else down 이라면 B가 숫자들의 중간값을 말한다.
4번으로 돌아간다.
8) else if 게임을 종료하고 A와 B의 역할을 바꾼다.
9) else 게임을 종료한다.
* 참고

'CS' 카테고리의 다른 글
| FTP와 SFTP (0) | 2026.08.27 |
|---|---|
| 블로킹과 논블로킹 (0) | 2026.08.25 |
| 모두를 위한 컴퓨터 과학(CS50 2019) - (2)C언어1 (0) | 2022.10.04 |