프로그래밍 수업에서 0xFF가 10진수로 얼마냐고 물으면 바로 답이 나오는 사람은 많지 않다. 255다. 컴퓨터 과학에서 진법 변환은 피할 수 없는 기초인데, 수동 계산은 한 자리만 잘못 나눠도 답이 통째로 틀어진다.
자주 쓰는 진법 4가지
| 진법 | 사용 숫자 | 주요 용도 |
|---|---|---|
| 2진수 (Binary) | 0, 1 | 컴퓨터 내부 연산, 비트 조작 |
| 8진수 (Octal) | 0~7 | 리눅스 파일 권한 (chmod 755) |
| 10진수 (Decimal) | 0~9 | 일상 숫자, 사람이 쓰는 기본 체계 |
| 16진수 (Hex) | 0~9, A~F | 메모리 주소, 색상 코드 (#FF0000) |
개발자라면 10진수, 2진수, 16진수 변환은 거의 매일 마주친다. 8진수는 리눅스 권한 설정할 때 주로 등장한다.
10진수를 2진수로 바꾸는 원리
10진수를 2로 계속 나누면서 나머지를 아래에서 위로 읽으면 2진수가 된다.
- 13 ÷ 2 = 6 ... 나머지 1
- 6 ÷ 2 = 3 ... 나머지 0
- 3 ÷ 2 = 1 ... 나머지 1
- 1 ÷ 2 = 0 ... 나머지 1
나머지를 거꾸로 읽으면 1101. 10진수 13 = 2진수 1101이다. 16진수 변환은 16으로 나누고, 10 이상의 나머지를 A(10), B(11)... F(15)로 바꿔 적으면 된다.
참고: 16진수 한 자리는 2진수 네 자리와 정확히 대응한다. 0xF = 1111, 0xFF = 11111111. 이 대응 관계를 외워두면 16진수와 2진수 변환은 암산으로도 가능하다.
도구로 바로 변환하기
자릿수가 커지면 수동 계산은 비현실적이다. 10진수 65535를 2진수로 바꾸려면 나눗셈을 16번 반복해야 한다. 진법 변환기에 숫자를 입력하면 2진수, 8진수, 10진수, 16진수가 동시에 나오고, 2~36진법까지 사용자 정의도 가능하다.
진법 변환 원리를 이해하는 건 중요하지만, 실무에서 매번 손으로 계산할 필요는 없다. 원리를 알고 도구를 쓰면 실수와 시간을 동시에 줄일 수 있다.