10진법은 손가락 때문이다
우리가 10진법을 쓰는 데 수학적인 이유는 없습니다. 손가락이 열 개라서 그렇게 굳었을 뿐입니다. 진법은 몇 개마다 자리를 올릴지에 대한 약속이고, 어떤 진법으로 적어도 수 자체는 같습니다. 255와 0xFF와 0b11111111은 같은 수를 세 가지 방법으로 적은 것입니다.
같은 수를 다르게 적는 것뿐입니다. 그런데 왜 굳이 다르게 적을까요.
우리가 10진법을 쓰는 데 수학적인 이유는 없습니다. 손가락이 열 개라서 그렇게 굳었을 뿐입니다. 진법은 몇 개마다 자리를 올릴지에 대한 약속이고, 어떤 진법으로 적어도 수 자체는 같습니다. 255와 0xFF와 0b11111111은 같은 수를 세 가지 방법으로 적은 것입니다.
전자 회로가 안정적으로 구분할 수 있는 상태는 전압이 높은가 낮은가 두 가지입니다. 열 단계를 구분하려면 잡음에 훨씬 약해집니다. 그래서 컴퓨터는 두 상태로 모든 것을 표현하고, 그 표기가 2진법입니다. 비트 하나는 이 두 상태 중 하나를 담는 자리입니다.
2진수는 자릿수가 너무 길어 사람이 읽기 어렵습니다. 16은 2의 네 제곱이라, 2진수 네 자리가 16진수 한 자리로 정확히 떨어집니다. 그래서 2진수와 16진수 사이의 변환은 계산 없이 네 자리씩 끊어 바꾸기만 하면 됩니다. 색 코드나 메모리 주소를 16진수로 적는 이유가 이것입니다.
10이라고만 적혀 있으면 10진수 십인지 2진수 둘인지 알 수 없습니다. 그래서 프로그래밍에서는 0x를 붙여 16진수, 0b를 붙여 2진수임을 표시합니다. 접두어 없이 적힌 숫자를 다른 진법으로 착각해 생기는 오류는 찾기 어려우므로, 표기를 분명히 하는 편이 안전합니다.
10진수를 다른 진법으로 바꾸려면 그 진법의 수로 계속 나누면서 나머지를 거꾸로 적으면 됩니다. 반대로 다른 진법을 10진수로 바꾸려면 각 자리에 그 진법의 거듭제곱을 곱해 더합니다. 자주 쓰는 값 몇 개를 외워 두면 대부분의 상황에서 계산이 필요 없어집니다.
아래 버튼을 누르면 해당 검색엔진에서 이 키워드로 바로 검색합니다