10 진수를 위한 2진 코드는 최소한 4비트(bit)를 필요로 한다. 


무슨 뜻인가?





보다시피 4비트는 최대 15 (1111 이 10진수로 변환했을 때 최대 큰 숫자) i.e. 10 이상까지 표현이 가능하다. 하지만 물론 10을 5 오버해서 넘어가기 때문에 그 아래 자릿수인 3비트를 확인해보면 최대 7 (111 이 10진수로 변환했을 때 최대 큰 숫자) 까지 밖에 표현이 안 된다.


최소 4비트를 필요로 한다는 것은 바로 이런 뜻이다.


자, 따라서 금방 소개한 것처럼 비트는 3비트가 아닌 4비트를 기준으로 잡고 간다.


왜? 우리에게 친숙한 10진수로 나중에 변환할 수 있어야 하기 때문에. 다른 이유가 있는 것이 아니다. 인간이 친숙한 수의 체계가 10진수이기 때문에 4비트로 가는 것이다.


자 그럼 여기까지의 결론...


"10진수를 위한 2진 코드는 4비트이다."



이제 이 개념을 바탕으로 숫자 코드(Numeric Code) 를 배워보도록 하겠다.


숫자코드는 가중치 코드, 비가중치 코드로 구분된다. (이게 뭐냐고? 잠시만!)


1) 가중치 코드 - 8421, 2421, 5421, 7421, 8421


2) 비가중치 코드 - Excess-3 code, Shift counter code, Gray code, 2-out-of-5 code, etc.


3) 자보수 코드(Self-complement) - 2421, Excess-3 code, 8421, 51111 


이게 어디에 쓰이고, 왜 필요하냐고? 그래서 나보러 어쩌라고?


일단 교재 스타일로, 전혀 직관적이지 않는, 와닿지 않을 설명을 하자면, "기종에 따라서 또는 사용하는 목적에 따라서 거기에 맞는 코드가 필요"하기 때문이다.


음.. 


위에 설명은 도움이 안 되었으리라 본다. 자, 이렇게 한 번 생각해 보자.


사람은 컴퓨터 언어(01000100100...) 를 이해할 수 있어야 하고, 컴퓨터는 사람이 사용하는 언어(3+4)를 이해할 수 있어야 한다. 


그래야 의사소통 (사람은 컴퓨터의 언어로 명령을 내리고, 컴퓨터는 처리 후 명령이 실행되었는지 유무 등등을 사람의 언어로 알리는 것과 같은) 이

이루어지지 않겠는가.


그래서 일종의 중간 언어 i.e. 규약 이 필요하다.


규약이라고 하는 순간 어렵게 느껴지기 때문에 중간 언어라고 하자.


이 중간 언어를 숫자 코드라고 보면 된다. 그리고 숫자 코드에는 다양한 종류들이 존재한다.


위에서 언급한 가중치 코드의 종류들, 비가중치 코드들 이 서로 다른 숫자 코드 i.e. 중간 언어들이라고 보면 된다.


근데 왜 이렇게 여러 가지 언어들이 있냐고?


프로그래밍 언어가 다양하게 있는 것과 같은 맥락으로 생각하자. 마치 인간이 모든 사람의 니즈(needs)를 만족시킬 수 없고, 어떤 일을 할 때 어떤 것에 더 비중을 둘 것인지 (그에 따라 다른 것은 당연히 상대적으로 덜 대접을 받게 된다) 선택을 해야만 하는 것처럼 모든 것은 상대적이고 마찬가지로 숫자코드도 그러한 의미에서 각기 다른 특성을 가지고 있고 그에 맞게 사용된다는 것이다.


그럼 이제 각 숫자 코드들에 대해 알아보도록 하자. 


 









WRITTEN BY
서상호

,