위 강의를 듣고 중요하다고 생각한 내용들을 정리, 요약해보았습니다.
스터디에 참가중이지 않은 분들도 위 사이트에서 수강신청을 통해 듣는 것이 가능합니다.
컴퓨터와 연결된 유일한 물리적 자원은 전기 → 여기에는 ON/OFF 라는 두 가지 상태만이 존재함
→ 이는 2진법으로 표현하기에 적합함
십진법에서는 첫번째 자리가 10^0, 두번째 자리가 10^1, 세번째 자리가 10^3..
각 자리가 10의 거듭제곱을 나타낸다.
이진법에서 첫번째 자리는 2^0,두번째 자리는 2^1, 세번째 자리는 2^2 ..
각 자리가 2의 거듭제곱을 나타낸다. 그리고 오로지 숫자 0과 1만을 사용해 나타낸다.
컴퓨터는 이진법으로 표현한 하나의 자릿수를 비트(bit)라는 단위로 부른다.
그리고 여덟개의 비트가 모여서 하나의 바이트(byte)라는 단위를 형성한다.
즉, 1바이트 = 8비트 이다.
바이트보다 더 큰 단위로 킬로바이트가 존재한다. 킬로바이트는 1000바이트와 같다.
메가바이트는 1000킬로바이트와 같다. 같은 방식으로 기가바이트, 테라바이트도 존재한다.
Q1. 5를 2진법으로 바꿔보면 어떻게 될까요?
A1. 5 = 2^2 + 1 이니까 5를 2진법으로 바꾸면 101
컴퓨터에서 문자나 이미지는 어떻게 표현될까?
문자는 ASCII(아스키코드)라는 정해진 규칙에 따라 표현된다.
여기에 들어가면 아스키코드표를 확인해볼 수 있다.
예를 들면, 알파벳 A의 대문자는 아스키코드표에서 10진수로 65라고 정해져있다.
컴퓨터에서는 65를 이진법으로 변환한 1000001로 나타낸다.
아스키코드의 이름에 American이 들어가있듯이 이는 미국 중심적으로 만들어졌다.
후에 다양한 언어와 이모티콘(😎😜이런것들!!) 등을 나타내기 위해 아스키코드의 상위 그룹인 유니코드(Unicode)가 탄생한다.
마찬가지로 그림도 숫자로 표현될 수 있다.
우리는 그림이 무수한 점으로 이루어져있다는 개념에는 익숙하다.
그런 작은 점을 픽셀이라고 부르는데, 픽셀의 색을 나타내기위해 RGB 표현 방식을 이용한다.
RGB는 Red,Green,Blue의 앞글자를 딴 것인데, 이 세가지 색을 이용해 화면에 보이는 색을 만들어낸다.
예를 들면, 빨간색 72, 초록색 72, 파란색 33을 섞으면 우리 눈에는 노란색이 보인다.
이 RGB코드를 이용해 우리는 이미지를 숫자로 표현할 수 있는 것이다.
그렇다면 영상이나 우리가 즐겨 쓰는 밈같이 움직이는 사진은 어떻게 나타내는 걸까?
그것들은 사진을 연속적으로 무수히 이어붙인것과 동일하기 때문에 역시 숫자로 표현이 가능하다.
Q2. CS50을 2진법으로 표현해보세요.
A2.
C (아스키 코드 67) → 이진법 01000011
S (아스키 코드 83) → 이진법 01010011
50 → 이진법 00110010
.
.
CS50 → 01000011 01010011 00110010
알고리즘은 입력(input)을 출력(output)형태로 만드는 처리과정.
같은 결과를 내도 여러가지 알고리즘이 존재할 것이며, 이때 정확하고 효율적인 알고리즘을 찾는 것이 중요함.
알고리즘은 의사코드(pseudo code)라는 방식으로 정리할 수 있음. (실제로 프로그램에 쓰이는 코드와는 다름)
Q3. 친구와 1부터 100까지 숫자 중 1가지 숫자를 맞추는 스무고개 게임을 하려고 합니다. 이 때 사용할 알고리즘을 의사코드로 표현하면 어떻게 될까요?
A3.
1. 친구에게 1~100의 범위에서 숫자를 하나 고르게 한다.
2. 친구에게 숫자가 주어진 범위의 중간값 = (최솟값+최대값)/2 과 같냐고 묻는다
3. 친구가 같다고 한다면
4. 게임종료
5. 그렇지 않다면 숫자가 중간값 보다 큰지 묻는다
6. 그렇다면 최대값은 그대로 두고, 최솟값을 중간값으로 바꾼 뒤 2로 돌아간다.
7. 그렇지 않다면 최솟값은 그대로 두고, 최댓값을 중간값으로 바꾼 뒤 2로 돌아간다.
관련 영상 ▼
부스트코딩 뉴비챌린지 스터디 5주차 : 메모리, 포인터 (0) | 2020.09.06 |
---|---|
부스트코딩 뉴비챌린지 스터디 4주차 : 구조체 (0) | 2020.09.05 |
부스트코딩 뉴비챌린지 스터디 4주차 : 알고리즘 (0) | 2020.09.05 |
부스트코딩 뉴비챌린지 스터디 3주차 : 배열, 명령행 인자 (0) | 2020.09.03 |
부스트코딩 뉴비챌린지 스터디 2주차 : C언어 (0) | 2020.08.13 |
댓글 영역