우리는 언어를 통해 상대방에게 복잡한 개념을 직접 보여주지 않고 의사소통을 할 수 있다. 컴퓨터 언어와 우리들의 언어에서 같은 의미로 사용되는 단어들을 알아보자.
a
, ,
등)비트를 사용할 때, 단순히 예(Yes) 또는 아니오(No) 중 하나가 요구되는 질문들은 하나의 비트를 사용해서 답변이 가능하다. 그러나, 구체적인 질문에는 하나의 비트만으로는 답할 수 없다.
다음 구체적인 질문에 답하기 위해선 스무고개와 같이 질문을 여러 개로 쪼개면 된다.
밖에 비가 내리고 있거나 추우면 코트를 입어라
이 두 개의 질문에 대한 답변에 따라 코트를 입을지 말지를 결정하면 된다.
이렇게 다른 비트들이 표현하는 내용 (밖에 비가오는가?, 추운가?)들을 통해 새로운 비트를 만들어내는 동작을 논리연산이라 한다.
연산 규칙의 집합을 의미하며 다음 3가지가 존재한다.
a AND b 의 연산을 NOT (NOT a OR NOT B)로 표현하는 방법
긍정적인 논리에 더해 부정적인 논리를 기술하는 명제를 사용할 때 드모르간 법칙을 ㅏㅅ용할 수 있다.
긍정적인 논리와 부정적인 논리를 위 코트 예제를 통해 알아보자.
논리 연산자마다 소모되는 비용이 다르므로(예를 들어 OR과 AND) 이처럼 드모르간 법칙을 적절히 사용하면 훨씬 간단하게 결과를 계산할 수 있다.
컴퓨터는 비트를 통해 숫자를 표현하기에 우리가 사용하는 10진수를 2진수로 저장한다. 10진수를 2진수로 변환하는 과정과 2진수를 10진수로 표현하는 과정을 예시로 알아보자.
이를 통해 2진수로 5,028은 총 13비트 수가 된다는 것을 알 수 있다.
비트 0 또는 1 값을 가지므로 n개를 통해 총 2^n 만큼의 값들을 표현할 수 있다.
2진수에서 양 끝 비트들을 표현하는 방식이 있다.
이진수 101 (10진수로 5)와 001 (10진수로 1)을 더해보자.
이를 통해 다시 위의 예제 이진수 덧셈을 이해해보자.
문맥에 따라 음수를 표현하는 방법은 다음 3가지 방법이 존재한다.
하나의 이진수 패턴에는 문맥(부호와 크기, 1의 보수, 2의 보수)에 따라 표현하는 값이 달라질 수 있다는 것을 명심하자.
문맥에 따라 실수를 표현하는 방법은 여러가지가 있다.
0은 8진수 0을 의미하나 8, 10진법 모두 0을 의미하므로 딱히 상관이없다.
큰 수를 가리키기위한 표준 용어도 존재한다.
그러나, 컴퓨터 엔지니어들은 이런 용어를 빌려와서 의미를 약간 바꿔 밑이 10이 아닌 2로 표현하게 해서 바이트나 비트를 표현할 때는 다음과 같이 표현한다
컴퓨터는 비트를 사용해 수를 표현했다. 아스키 코드는 수와 마찬가지로 문자나 키보드에 있는 다른 기호등을 수를 사용해 표현하는 방법이다.
그런, 아스키 코드는 영어를 표현하는 모든 문자를 포함하고 있지만 시간이 지남에 따라 그 밖의 언어들을 지원해야 할 필요가 생겼다. 국제 표준화 기구(ISO)에서 ISO-646과 ISO-8859를 도입하여 유럽 언에에 필요한 액센트 기호나 발음 구별 기호를 추가했다.
이렇게 각기 다른 표준이 존재하는 이유는 예전에는 비트의 비용이 비쌌기에 문자를 7 ~ 8 비트에 욱여넣었다. 비트 가격이 떨어짐에 따라 유니 코드라는 새로운 표준이 생겼고 문자에 16비트 코드를 부여했다. 이후 유니코드는 21비트까지 확장되었다.
모든 문자를 아스키 코드를 통해 8비트로 표현이 가능했고, 과거엔 비트의 사용 비용이 비쌌기에 굳이 16비트를 사용해서 문자를 표현하지 않았다. 유니코드는 문자 코드에 따라 각기 다른 인코딩을 사용해 이러한 문제를 해결한다.
인코딩
다른 비트 패턴을 표현하기 위해 사용하는 비트 패턴
그 중 유니코드 변환 형식 8비트(UTF-8)이 현재까지도 하위 호환성과 효율성 때문에 가장 널리 쓰이고 있다. UTF-8은 모든 아스키 문자를 8비트로 표현하기 때문에 아스키 데이터를 인코딩할 때 추가 공간이 필요하지 않다. 이 외에 아스키가 아닌 문자들은 아스키를 받아서 처리하는 프로그램이 깨지지 않는 방법으로 문자를 인코딩한다.
컴퓨터와 컴퓨터 사이에서 2진 데이터를 직접 보내어 송수신을 할 수 있다.
컴퓨터 그래픽스 : 전자 모눈종이에 해당하는 것에 색을 표현하는 점을 찍어 그림을 만드는 과정
픽셀 : 모눈의 각 격자에 찍는 점
컴퓨터 모니터는 빨간색(R), 녹색(G), 파란색(B) 광선을 섞어서 색을 만들어내며 이를 RGB 색 모델이라 한다. 색은 컬러 큐브라는 것으로 표현할 수 있다.
아무 빛도 없으면 (0, 0, 0) 검은색이고, 모든 빛을 최대로 켜면(1, 1, 1) 흰색이다. 이런 식으로 빛을 혼합해 색을 표현하는 방법을 가산 색 시스템이라고 한다.
현대 컴퓨터들은 색을 표현하는데 24비트를 사용해 10,000,000에 가까운 2의 제곱수에 해당하는 색을 표현할 수 있다. 이들은 세 가지의 8비트 필드로 나뉘며 각 필드는 세 가지 주요 색(RGB)을 표현(0 ~ 255)한다.
웹 페이지는 주로 사람이 읽을 수 있는 UTF-8 문자의 시퀀스로 이뤄지는 텍스트를 표현하기에 텍스트를 통해 색을 표현할 방법이 필요하다.
URL 인코딩과 비슷한 방싱그로 색을 인코딩한다. 웹에서는 색을 16진 트린플렛으로 표현한다. # 뒤에 여러가지 16진 숫자를 추가해 #rrggbb 처럼 표현하는 방식이다. 여기서 r은 빨간색, g는 초록색, b는 파란색을 의미하며 각 값들은 0(없음) 또는 f(가득)로 채운다. (ex. #000000 : 검은색, #ffffff : 흰색, #fff000 : 노란색)
각각의 8비트 색값을 두 자리 문자로 된 16진 표기로 바꾼다.