진법 변환은 자릿값을 바꾸는 일
10진수 255는 2×10² + 5×10¹ + 5×10⁰ 입니다. 같은 원리로 2진수는 2의 거듭제곱, 16진수는 16의 거듭제곱을 자릿값으로 씁니다. 255를 2진수로 쓰면 11111111, 16진수로 쓰면 FF가 되는데 셋 다 같은 수를 다른 눈금으로 적은 것뿐입니다.
10진수를 다른 진법으로 바꾸는 방법은 나머지를 모으는 것입니다. 수를 진법으로 나누고 나머지를 적은 뒤 몫을 다시 나누기를 반복하고, 마지막에 나온 나머지부터 거꾸로 읽으면 됩니다. 반대 방향은 각 자리에 자릿값을 곱해 더하면 됩니다.
16진수가 널리 쓰이는 이유는 2진수 네 자리가 정확히 16진수 한 자리와 맞아떨어지기 때문입니다. 색상 코드 #8B5CF6은 24비트를 여섯 글자로 줄여 적은 것이고, 8진수는 세 비트씩 묶기 때문에 유닉스 파일 권한처럼 세 자리 단위가 의미를 갖는 자리에서 살아남았습니다.
변환에서 자주 틀리는 지점
16진수를 넣을 때 0x 접두사나 대소문자 때문에 값이 안 읽히는 경우가 많습니다. FF와 ff와 0xFF는 모두 같은 255이므로 형식보다 자릿수를 먼저 확인하세요. 진법 선택을 잘못 두면 101 같은 값은 2진수로 5, 10진수로 101이 되어 완전히 다른 답이 나옵니다.
비트 수는 값이 몇 자리 2진수로 표현되는지를 뜻하며, 저장에 필요한 크기와는 다릅니다. 255는 8비트로 표현되지만 부호가 있는 정수로 다루면 8비트에 −128부터 127까지밖에 담기지 않아 255가 들어가지 않습니다.
음수와 소수는 여기서 다루지 않습니다. 음수는 2의 보수 같은 별도 표현 규칙이 필요하고 자릿수를 몇으로 잡느냐에 따라 결과가 달라지기 때문입니다. 소수 역시 2진수에서 유한하게 떨어지지 않는 경우가 많습니다.