컴퓨터가 0과 1에 의해 실행되는 것은 모두가 알고 있다. 하지만 실제로 0과 1이라는 숫자를 주고 받는 건 아니다. 컴퓨터는 전기 신호를 통해 0과 1을 나타낸다. 전기가 들어오지 않았다면 0, 전기가 들어왔다면 1이다. 이런 방식으로 우리는 계전기, 진공관, 트랜지스터 등을 거쳐 컴퓨터가 0과 1을 표현하게 할 수 있었다.
0과 1로 신호를 주고 받는다는 건 알았다. 그럼 0과 1로 대체 무엇을 할 수 있을까?
•
수적 계산 (Arithmetic)
•
논리적 계산 (Logical)
이다.
"수적 계산에 사용"
0과 1은 이진법으로 모든 숫자를 표현할 수 있다. 십진법으로 846를 표현하려면 아래와 같이 10에 자리수만큼 제곱하고 수를 곱하면 된다.
846 = (10^2 * 8) + (10^1 * 4) + (10^0 * 6)
이진수로 846을 표현하려면 어떻게 해야할까. 846은 2^9 * 1 + 2^8 + 2^6 + 2^3 + 2^2 + 2 를 더한 것이다. 1과 0의 숫자만 나열해보면 846의 이진수는 1101001110이다.
(2^9 * 1) + (2^8 * 1) + (2^7 * 0) + (2^6 * 1) + (2^5 * 0) + (2^4 * 0) + (2^3 * 1) + (2^2 * 1) + (2^1 * 1) + (2^0 * 0)
이런식으로 모든 숫자를 표현할 수 있다. 그렇다면 음수는 어떻게 표현할까? 첫번째 비트를 음수 여부를 나타내는 SIGN BIT(부호 비트)로 사용한다. 예를 들어 8비트에서 첫번째 비트가 0이면 양수고, 1이면 음수이다. -14는 10001110 이다.
이렇게 0과 1로 모든 숫자를 표현하여 연산할 수 있다. (물론 수를 표현할 수 있는 것이지, 연산 자체를 할 수 있다는 뜻은 아니다.)
"논리적 계산에 사용"
컴퓨터는 0과 1을 통해 true, false를 나타낸다. 0과 1을 참거짓으로 생각하면, and, or, xor같은 논리 연산도 가능하다.
1. and
and는 둘 다 참인 경우에만 참이다.
2. or
둘 중 하나라도 참이면 참이다.
3. xor
배타적 논리합은 두 명제 중 하나만 참일 경우에 참이다. 둘 다 참인 경우는 참에서 제외된다.
간단하게 생각하면 0과 1은 전기 신호고, 컴퓨터는 전기 신호를 통해 연산에 필요한 입력값을 받고, 또 출력하는 데도 표현할 수 있다.