본문 바로가기
Computer Architecture

2진수

by 랜디 로즈 2022. 12. 19.

2진수, 영어로는 binary 라고 합니다. 컴퓨터의 구조를 이해하려면 2진수 체계를 이해하지 않고서는 불가능합니다.

2진수

마이크로소프트의 창립자이자 회장님이셨던 빌 게이츠 현 멜린다 게이츠 재단 이사장님께서 1995년  쓰신 책  <미래로 가는 길> 2장 "정보시대의 개막"에 2진수를 쉽게 이해할 수 있는 글이 있어 옮겨 봤습니다. 제가 쓴 글이 아니지만 빌 게이트 회장님께서는 이해해 주실 것 같습니다만, 문제가 되면 삭제하겠습니다.

 

회장님께서 쓰신 <미래로 가는 길(A Road Ahead)>. 당연히 내돈내산.

클로드 섀넌은 아직 학생이던 1930년대 말 논리 명령을 수행하는 기계가 정보를 처리할 수 있음을 증명했다. 학위논문의 주제이기도 했던 이 발견의 내용은 참이면 닫히고 거짓이면 열리는 컴퓨터 회로가, 참 을 1로 거짓 을 0으로 나타내서 논리연산을 할 수 있다는 것이었다.

 

이것이 바로 2진법이다. 2진수는 부호이며 전자 컴퓨터의 알파벳이다. 2진수는 컴퓨터가 모든 정보를 번역하고 저장하고 활용하는 데 쓰는 기본 언어다.

 

당신의 방을 250와트짜리 전구로 밝힌다고 가정하자. 그런데 당신은 조명을 0와트에서 250와트까지 자유롭게 조절하고 싶다. 먼저 회전식 조명 스위치를 250와트 전구에 연결하는 방법이 있다. 완전히 어둡게 하려면 스위치를 시계 반대방향으로 끝까지 돌리면 된다. 최대한으로 밝게 하려면 시계 방향으로 끝까지 돌린다. 중간 정도의 밝기를 원한다면 양 극단 사이의 적당한 지점까지 스위치를 돌린다.

 

이 시스템은 사용하기는 쉽지만 한계가 있다. 스위치가 중간 위치에 있으면 -가령 조명이 중간 정도의 밝기라면-당신은 밝기를 눈대중으로밖에는 알 수 없다. 사용되는 전력의 양이 얼마이며 스위치의 위치가 어디인지를 정확히 설명할 수 없다. 당신의 지식은 어디까지나 근사치에 머물기 때문에 그것을 저장하거나 재생하기가 곤란하다. 다음주에 똑같은 밝기로 전등을 켜고 싶다면 어떻게 해야 할까? 어느 만큼 돌려야 할지를 알기 위해 스위치 판에다 표시를 해놓을 수도 있지만, 정확하지가 않다. 다른 밝기로 전등을 켜고 싶다고 해도 사정은 마찬가지다. 만일 친구가 당신과 똑같은 밝기의 조명을 유지하고 싶어한다 치자. 스위치를 시계방향으로 5분의 1쯤 돌리라 든가 화살표가 2사 방향에 올 때까지 스위치를 돌리라 고 친구에게 말해줄 수 있으리라. 하지만 친구의 조명은 어디까지나 근사치에 머문다. 만일 당신의 친구가 다른 친구에게 그 정보를 전하고, 그 친구는 또 다른 친구에게 그것을 전한다고 하면 과연 어떤 일이 벌어질까? 정보가 한 다리를 건널 때마다 정확도는 점점 떨어질 수 밖에 없을 것이다.

 

이것이 아날로그 형태로 저장되는 정보의 단점이다. 조명들의 스위치는 전구의 밝기에 대한 아날로지, 곧 비슷한 꼴을 제공한다. 스위치가 절반 가량 돌아가면 당신은 사용 가능한 전력의 약 절반을 쓰고 있는 셈이다. 우리가 스위치를 어느 만큼 돌렸는지 측정하거나 남에게 설명할 때, 실은 밝기에 대한 정보가 아니라 밝기의 비슷한 꼴에 대한 정보를 저장하는 것이라고 보아야 한다. 아날로그 정보도 취합하고 저장하고 재생할 수는 있지만 부정확하다. 매번 전달될 때마다 정확도가 떨어지는 위험성을 안고 있다.

 

이제 방의 밝기를 기술하는 전혀 다른 방식을 알아보기로 하자. 정보를 저장하고 사용한다는 점에서는 똑같지만 이것은 아날로그가 아닌 디지털 방식이다. 모든 정보는 오직 0과 1만을 써서 수로 변환할 수 있다. 0과 1로만 표현되는 수를 2진수라 한다. 0과 1은 각각 비트라고 부른다. 일단 수로 변환된 정보는 컴퓨터 안에 기다란 비트의 나열로 입력 저장될 수 있다. 이런 수들을 디지털 정보 라 일컫는다.

 

당신이 250와트짜리 전구 하나가 아닌, 밝기가 1에서 128까지 2배씩 높아지는 여덟 개의 전구를 갖고 있다고 가정하자. 이 전구들 하나하나는 별도의 스위치에 연결되어 있고 가장 와트수가 낮은 전구가 오른쪽에 놓인다. 그런 배열을 다음과 같이 나타낼 수 있을 것이다.

 

이 스위치들을 켜고 끔으로써 당신은 조명을 0와트(모든 스위치를 끈다)에서 255와트(모든 스위치를 켠다)까지 1와트 단위로 키울 수 있다. 즉 당신에게 256가지의 가능성이 주어진 것이다. 1와트 밝기로 하고 싶으면 1와트 전구에 연결된 가장 오른쪽의 스위치를 켜면 된다. 2와트로 하고 싶으면 2와트 전구만 켜면 된다. 3와트로 하고 싶으면 1와트 전구와 2와트 전구를 켠다. 1과 2를 더하면 3이 되기 때문이다. 4와트로 하고 싶으면 4와트 전구를 켠다. 5와트로 하고 싶으면 4와트 전구와 1와트 전구를 켠다. 250와트로 하고 싶으면 4와트 전구와 1와트 전구를 제외한 모든 전구를 켠다.

 

저녁식사를 하기에 가장 알맞은 실내조명이 137와트라면 128와트 전구, 8와트 전구, 1와트 전구를 켜면 된다.

 

이 시스템은 현재의 밝기를 기록했다가 나중에 다시 쓰거나, 똑같은 밝기의 조명을 원하는 사람에게 정보를 전달할 때 정확성을 기할 수 있다는 장점을 갖는다. 2진 정보를 기록하는 방식은 만국 공통이므로-오른쪽이 가장 작은 수이며 왼쪽으로 2배씩 커진다-어떤 와트수의 전구인지를 일일이 확인할 필요가 없다. 켜짐 꺼짐 꺼짐 꺼짐 켜짐 꺼짐 꺼짐 켜짐 식으로 스위치의 상태만 기록하면 된다. 그 정보만 있으면 친구는 당신의 방과 같은 137와트의 밝기를 충실히 재현할 수 있다. 중간에 실수만 저지르지 않는다면 이런 정보는 백만 단계를 거친다 하더라도 최종값은 똑같이 137와트로 나올 것이다.

 

기호를 좀더 간단히 만들면 꺼짐 은 0으로 켜짐 은 1로 바꿀 수 있다. 이렇게 되면 첫째, 다섯째, 여덟째를 켜고 나머지는 끄라는 지시를 내리고 싶을 경우, 켜짐 꺼짐 꺼짐 꺼짐 켜짐 꺼짐 꺼짐 켜짐 대신 1,0,0,0,1,0,0,1 또는 10001001이라고만 적으면 된다. 이것이 2진수다. 여기서 2진수 10001001은 137을 가리킨다. 당신은 친구에게 전화를 걸어서 알린다.

 

완벽한 밝기를 알아냈어! 10001001이야. 해보라구. 당신의 친구는 필요한 스위치만 껐다 켰다 하여 같은 밝기를 정확히 얻을 수 있으리라. 광원의 밝기를 묘사하는 방법치고는 다소 복잡해 보일지 모르지만, 이것은 현대의 모든 컴퓨터가 기본적으로 받아들이고 있는 2진 표현의 원리를 설명하기 위해 든 하나의 예다.

'Computer Architecture' 카테고리의 다른 글

진수 변환  (1) 2022.12.21