컴퓨터 공학이나 프로그래밍을 공부하다 보면 진법 변환을 해야 할 때가 있다. 10진수는 익숙한데 2진수나 16진수는 직관적이지 않다. 255를 예로 들어 각 진법으로 어떻게 표현되는지 알아봤다.
진법의 기본 개념
10진수는 0-9까지 10개의 숫자를 사용한다. 2진수는 0과 1만 사용하고, 8진수는 0-7, 16진수는 0-9와 A-F를 사용한다. 컴퓨터는 내부적으로 2진수로 동작하지만, 2진수는 자릿수가 너무 길어져서 보기 불편하니까 16진수를 많이 쓴다.
255는 특별한 숫자다. 8비트로 표현할 수 있는 가장 큰 수이기 때문에, 2진수로는 11111111(8자리 모두 1), 16진수로는 FF가 된다. 8진수로는 377이다.
빠르게 변환하기
진법 변환기에 숫자를 입력하면 여러 진법으로 동시에 변환된다. 2진수, 8진수, 10진수, 16진수를 한눈에 볼 수 있어서 비교하기 좋다.
자주 쓰이는 변환 예시
- 255 (10진수) = 11111111 (2진수) = 377 (8진수) = FF (16진수)
- 128 (10진수) = 10000000 (2진수) = 200 (8진수) = 80 (16진수)
- 256 (10진수) = 100000000 (2진수) = 400 (8진수) = 100 (16진수)
프로그래밍에서의 활용
파일 권한(chmod), 색상 코드, 메모리 주소 등에서 8진수나 16진수가 자주 쓰인다. 리눅스에서 chmod 755는 8진수 표기법이고, 이걸 2진수로 풀면 111101101(rwxr-xr-x)이 된다.
진법 변환기는 이런 상황에서 유용하다. 특히 디버깅할 때 메모리 덤프가 16진수로 나오는데, 이걸 10진수나 2진수로 변환해서 의미를 파악해야 할 때가 있다.
수기 계산 방법
10진수를 2진수로 바꾸려면 2로 계속 나누면서 나머지를 기록하면 된다. 255를 2로 나누면 몫 127 나머지 1, 127을 2로 나누면 몫 63 나머지 1... 이렇게 반복해서 나머지를 역순으로 읽으면 11111111이 된다. 하지만 변환기를 쓰는 게 훨씬 빠르고 정확하다.