진법을 수학이나 프로그래밍을 기초부터 배우실 때 이야기를 들어 보셨죠? 저는 수학을 할 때 들었던 기억보다 프로그래밍을 처음 공부를 시작하면서 공부하게 된 것 같습니다.
수학을 좋아하지 않다 보니 진법을 공부하면서 많이 어려워했던 기억이 있습니다.
컴퓨터는 0과 1로만 모든 것을 표현한다고 하는 말은 들어 보셨을 겁니다. 사람의 진법과 컴퓨터의 진법이 다르다 보니 어려움을 느끼시겠지만 이 글을 읽음으로써 진법에 대한 이해와 컴퓨터의 원리를 이해를 하실 수 있습니다.
컴퓨터를 이해하고 사람들과 어떻게 다르며 사람이 사용하는 진법과 컴퓨터가 사용하는 진법의 변환을 잘 할 수 있습니다. 또한 진법에 대한 기본적인 개념도 역사적으로 알아볼 수 있습니다.
진법의 개념
진법은 수를 표기하기 위한 기수법으로 임의 숫자를 사용하여 수를 표현하는 방법입니다. 여기서 진법이라고 불리는 이유는 수를 셀 때 숫자의 값이 계속 올라가다가 자릿수가 바뀌는 그 시점의 값을 기준으로 사람들이 사용하는 10진수의 형태로 진법을 표현하게 됩니다. 또는 진법을 통해 나타낼 수 있는 수의 개수가 진수가 됩니다. 그렇기 때문에 진수와 진법은 같이 움직입니다.
위의 글에서 10진수라고 했는데 왜 사람은 10진수라는 체계를 오랜 세월에 걸쳐서 사용하고현재까지도 사용하고 있습니다. 그러면 왜 10진수, 10진법을 사용하게 된 건가요? 그것은 사람의 손가락이 10개였기 때문에 오랜 시대를 걸쳐서 10진수를 사용하고 지금까지도사용하고 있습니다. 참고로 10진수는 수의 기준으로 본다면 그렇게 효율적인 진수와 진법은 아닙니다.
그럼 10진수를 세부적으로 왜 10진수, 10진법이라고 하는지 설명을 하겠습니다.
사람이 사용하는 10진수를 한 자리로만 표현을 할 수 있는 수는 0~9까지입니다. 9에서 1이 더해지면 자릿수가 바뀌게 됩니다. 바로 10이 됩니다. 그래서 사람이 지금까지도 사용하는 수가 10진법인 겁니다. 10진수는 수의 개수이기 때문에 0부터 9까지 세어보면 10개가 나옵니다. 그러므로 10진수라고 합니다.
컴퓨터의 진법은 2진법을 사용합니다. 2진법은 0, 1 이후에 사람이 사용하는 10진수에서 2가 되려고 할 때 자릿수가 바뀌어서 2진법이라고 합니다. 당연히 진수로도 2진수입니다. 0과 1이기 때문에 수가 2개이기 때문입니다.
여기서 궁금한 점이 있으실 수 있습니다. 왜? 컴퓨터는 2진수일까요? 이 부분은 현재 이런 문명이 만들어준 초석인 전기를 생각하시면 됩니다. 전기 같은 경우 ON OFF 이렇게 2개를 사용할 수 있기 때문에 이걸 컴퓨터에서도 당연히 전기로 움직이는 기계이기 때문에 ON OFF인 2개의 수를 가지는 2진수가 나오게 된 것입니다.
컴퓨터에서 처음에는 2진법을 통해서 컴퓨터에 명령을 내리거나 데이터를 저장하고 하였습니다. 여기서 한번 더 궁굼증이 생길 수 있습니다. 3 이상의 값을 컴퓨터가 어떻게 사용이 가능하지? 지금 사용하는 컴퓨터를 보면 숫자를 기본이고 문자열 까지도 표현을 하지? 바로 정답은 자릿수마다 승수의 값을 가지게 하여서 아무리 큰 값이라도 표현하고 사용을 할 수 가 있습니다.
현재 사용되고 있는 진법의 종류
우선 한 가지를 기본적으로 알고 있어야 합니다. 진법은 무한하게 만들 수 있습니다. 예를 들면 38진법이라던지 127진법 등과 같이 누구나 마음먹으면 진법을 만들 수 있습니다. 하지만 현재 세상에서 통용되고 사용되는 진법은 4가지가 있습니다. 이전부터 이야기한 사람들이 사용하는 10진법과 컴퓨터가 사용하는 2진법 그리고 컴퓨터에서 파생되어서 사용이 되는 8진법과 16진법입니다.
8진법은 0~7까지 숫자로 표현되고 8이 되는 순간 10이 됩니다. 16진법은 0~9까지는 그대로 사용되고 10은 A 11은 B 12는 C 13은 D 14는 E 15는 F이고 16을 나타내려면 자릿수가 올라가서 10이 됩니다.