📚 시리즈 목차
1. 컴퓨팅 사고
1. 컴퓨팅 사고
1) 2진법
컴퓨터는 오직 0과 1로만 데이터를 표현한다. 즉, 우리가 흔히 사용하는 0,1,2,3,4,5,6,7,8,9 총 10개의 기호로 표현하는 10진법이 아니라 단 2개의 숫자로 컴퓨터는 모든 데이터를 다룬다.
그럼 두 개의 숫자로 어떻게 동작할까?
일반적으로 십진법은 아래와 같이 숫자를 표현한다.
백의 자리에 1, 10의 자리에 2 1의자리에 3 그래서 123이 완성이된다.
이는 10의 거듭제곱으로 표현되어있는것이다.
그런다면 오직 0과 1만 사용하는 2진법이라면 ?
2의 거듭제곱을 사용할 것이다.
만약 우리가 3이라는 숫자를 2진법으로 표현하려면 아래와 같다.
이와 같은 2진법은 전기를 통해 연산하는, 즉 전기를 켜고 끄는 방식으로 작동하는 컴퓨터에게 적합한 방법이다.
컴퓨터에는 굉장히 많은 스위치가 있고 on/off 상태를 통해 0과 1을 표현한다.
이 스위치는 다른말로 트랜지스터 라고도 한다.
컴퓨터는 2진법에서 하나의 자릿수를 표현하는 단위를 비트라고 한다.
비트
정보를 저장하고 연산을 수행하기 위해 컴퓨터는 비트(bit)라는 측정 단위를 사용한다. 비트는 이진 숫자라는 뜻을 가진 "binary digit"의 줄임말이며, 0과 1, 두 가지 값만 가질 수 있는 측정 단위이다. 디지털 데이터를 여러 비트들로 나타냄으로써 두 가지 값만을 가지고도 많은 양의 정보를 저장할 수 있다. 또한 컴퓨터는 저장되어 있는 데이터를 수정하기 위해 비트에 수학적 연산을 수행할 수 있다.
비트열
비트 한 개는 많은 양의 데이터를 나타내기에 턱없이 부족하다. 그렇기 때문에 여러 숫자 조합을 컴퓨터에 나타내기 위해 비트열을 사용한다. 바이트(byte)는 여덟 개의 비트가 모여 만들어진 것이다. 하나의 바이트에 여덟 개의 비트가 있고, 비트 하나는 0과 1로 표현될 수 있기 때문에 2^8 = 256개의 서로 다른 바이트가 존재할 수 있다.
다양한 데이터 표현
2) 정보의 표현
이제 숫자는 표현할 수 있게되었고 그렇다면 문자는 어떻게 표현할까?
바로 문자를 숫자로 표현 할 수 있도록 정해진 약속(표준)이 있다.
그 중 하나는 ASCII(아스키코드/American Standard Code for information interchange)이다.
총 128개의 부호로 정의되어있다.
여기서 알파벳 A는 십진수로 65이고 65를 2진수로 표현하면 1000001이다.
더 알아보기
ASCII 인코딩 표준
아스키코드에서 소문자는 같은 대문자 글자보다 항상 2^5만큼 크다.
결과적으로 이진수에서 2^5의 자릿수만 바꾸면 되기 때문에 (소문자는1, 대문자는 0으로) 소문자와 대문자 간의 변환이 쉬워진다.
ASCII의 한계
기본 ASCII 코드 표는 7비트만 이용해서 모든 문자들을 나타낸다. 이것은 ASCII 코드로 2^7개, 즉 128개의 문자를 나타낼 수 있다는 것을 의미한다. 확장 ASCII는 8번째 비트를 추가하여 총 256개의 문자를 나타낼 수 있도록 한다.
확장 ASCII코드로도 나타낼 수 없는 문자들이 아직도 많다.
이 때문에 훨씬 더 많은 문자들을 포함할 수 있는 유니코드(Unicode)이 생기게 되었다. 유니코드는 100만개 이상의 문자들을 나타낼 수 잇는 문자 인코딩 표준이다. 유니코드의 첫 128개의 문자는 ASCII의 128개의 문자와 동일하므로 서로 호환이 된다.
문자와 같이 그림도 역시 숫자로 표현할 수 있다.
우리가 스크린을 통해 보는 그림을 자세히 살펴 보면 수많은 작은 점들이 빨간색, 초록색, 파란색을 띄고 있다.
이런 작은 점을 픽셀이라고 부른다. 각각의 픽셀은 세 가지 색을 서로 다른 비율로 조합하여 특정한 색을 갖게 된다.
예를 들어 빨간색 72, 초록색 72, 파란색 33을 섞게 되면 노란색이 되는 것과 같은 방식이다.
이 숫자들을 표현하는 방식을 RGB(Red, Green, Blue)라고 한다.
3) 알고리즘
지금까지 우리는 숫자, 글자 , 색깔 등을 컴퓨터가 이해할 수 있는 2진법으로 표현 하는 것을 배웠다.
이 것은 입력(input)에 해당하는 것이다.
그렇다면 입력에서 출력(output)을 어떻게 얻을 수 있을까?
컴퓨팅은 입력을 받아 그 입력을 처리한 후 출력하는 과정이다.
알고리즘은 입력(input)에서 받은 자료를 출력(output)형태로 만드는 처리 과정을 뜻한다.
즉, 알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다.
이러한 일련의 순서적 규칙들을 어떻게 나열하는지에 따라 알고리즘의 종류가 달라진다.
같은 출력값이라도 알고리즘에 따라 출력을 하기까지의 시간이 다를 수 있다.
알고리즘을 평가할 때는 정확성도 중요하지만, 효율성도 중요하다 .
의사코드
의사코드란 컴퓨터가 수행할 작업을 프로그램 언어가 아니라 사람이 사용하는 언어로 알고리즘의 논리적 절차를 작성한 코드이다.
알고리즘은 아래와 같은 의사코드(Pseudo code)라는 방식으로 보다 명료하게 정리할 수 있다.
의사코드는 필요한 행동이나 조건을 잘 설정하여 컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 도와준다.
'CS > CS50' 카테고리의 다른 글
[CS50] 6. 자료구조 (0) | 2023.06.17 |
---|---|
[CS50] 5. 메모리 (1) | 2023.06.01 |
[CS50] 4. 알고리즘 (0) | 2023.05.31 |
[CS50] 3. 배열 (0) | 2023.05.27 |
[CS50] 2. C언어 (0) | 2023.05.25 |