2진법
컴퓨터에게 우리가 처음 값을 인식시키는 방법은
전류를 보내고 끊고 하는 식의 신호를 보내는 것에서 시작되었다.
그렇게 1과 0이 처음 컴퓨터에 인식되었다.
우리가 실생활에서 사용하는 숫자는 10진법이다.
하지만 우리의 컴퓨터가 인식할 수 있는 가장 기본이 되는 신호는 0과 1이다.
이렇게 표현하는 방식은 2진법이라고 한다.
하지만 0과 1로만으로는 그 많은 사진, 동영상, 간단한 기호도 표현하는 것일까?
그에 대한 답은, 이진법에 해당하는 값에 의미를 할당하는 것이다.
즉, 이진법을 통해 새로운 의미를 표현하는 것이다.
컴퓨터 내에 있는 굉장히 많은 스위치(트렌지스터)가 전기를 켜고 끄는 방식을 통해 값을 기록한다.
2진법에서 하나으 자릿수를 표현하는 단위를 비트(bit)라고 한다.
binary digit의 줄임말이다.
하지만 이 비트 하나로는 수많은 데이터를 저장하기 턱없이 부족하다.
그래서 여러 숫자의 조합으로 비트열을 생성하고,
8개의 비트열은 바이트(byte)라고 한다.
킬로바이트 = 1,000 바이트
메가바이트 = 1,000 킬로바이트(100만 바이트)
기가바이트 = 1,000 메가바이트(10억 바이트)
테라바이트 = 1,000 기가바이트(1조 바이트)
그 이상으로 페타바이트와 엑사바이트도 있다.
정보의 표현
2진법을 통해 비트를 만들고 그 배열을 통해 숫자를 표현한다.
그렇다면 숫자가 아닌 문자는 어떻게 표현할 수 있을까?
문자를 숫자로 표현할 수 있도록 오래전 부터 정해진 표준을 사용하면 된다.
그 중 하나가 ASCll(아스키코드)이다.
American Standard Code for Information Interchange의 줄임말이다.
총 128개의 부호로 정의 되어 있다.
A | B | C | D | E | ... |
65 | 66 | 67 | 68 | 69 | ... |
a | b | c | d | e | ... |
97 | 98 | 99 | 100 | 101 | ... |
이 외에도 Unicode라는 표준이 있다.
여기서는 더 많은 비트를 사용하여 더 다양한 문자들도 표현할 수 있다.
이모티콘도 표현할 수 있도록 해준다.
그림 역시 숫자로 표현할 수 있다.
우리의 화면에 보이는 그림은 자세히 보면 빨간색, 초록색, 파란색을 띄고 있다.
이런 작은 점을 픽셀이라고 부른다.
세 가지 색을 서로 다른 비율로 조합해 가며 새로운 특정 색을 만들어 낸다.
빨간색 72, 초록색 72, 파란색 33을 섞게 되면 노란색이 되는 것과 같은 방식이다.
이렇게 숫자들을 표현하는 방식을 RGB(RED, GREEN, BLUE)라고 한다.
알고리즘
위에서 배웠던 것처럼 우리가 입력(input)을 한다면 어떻게 컴퓨터는 출력(output)을 하게 되는 것일까?
컴퓨팅은 입력을 받아 그 입력을 처리하고 출력하는 과정이다.
알고리즘은 입력에서 받은 자료를 출력형태롤 만드는 처리 과정을 뜻한다.
즉, 입력값을 출력값으로 바꾸기 위해 어떤 명령들이 수행되어야 하는 지에 대한 규칙들의 순서적 나열이다.
알고리즘의 평가 요소는 정확성도 있지만, 효율성 역시 중요하다.
만약 한 정보를 찾기 위해 엄청나게 많은 정보더미를 뒤져야 한다면,
하나하나 찾게 되면 정확히 찾을 수는 있지만 분명 시간을 오래 걸릴게 분명하다.
그렇다면 이는 정확성은 있어도 효율성은 없는 일처리 일 것이다.
하지만 우리는 더미를 두개로 나누고, 한쪽에 정보가 있는지 확인하고 있는 쪽 찾아보고,
이를 반복하다 보면 결국 마지막에 남는 정보는 내가 찾는 정보가 될 것이다.
이렇게 하면 정확성, 효율성 모두 가진 일처리라고 할 수 있다.
따라서 이렇게 규칙에 따라 순서대로 이루어진 일련의 사고와 처리방식을 알고리즘이라고 한다.
컴퓨터가 알고리즘을 통해 일처리를 한다면 우리는 또 어떻게 우리가 원하는 처리방식을 표현할 수 있을까?
우리는 의사코드를 통해 인식시킬 수 있다.
함수(function)라는 동사를 사용하게 되고,
또 그 안에서 우리가 원하는 조건을 설정하며
원하는 값이 나올 때까지 반복(loop)하게끔 설정하기도 한다.
또 값이 맞는지 확인하도록 불리언(boolean) 값을 반환시키기도 한다.