10진수 → 2진수: 기계가 숫자를 담는 방식 그대로 쓰기
이 변환이 하는 일
10진수 숫자를 0과 1만으로 다시 씁니다. 모든 정수는 2진수 표현을 단 하나만 가지며 어느 방향으로도 정보가 사라지지 않습니다. 그래서 이 변환은 근사가 아니라 표기를 바꾸는 일입니다. 서른 자리 숫자에도 정확한 답을 약속할 수 있는 이유이고, 부동소수점 계산기에는 그 약속을 할 수 없습니다.
나머지를 거꾸로 읽는 이유
나누기 방법은 최하위 비트를 먼저 만들어 내므로 나머지 목록을 아래에서 위로 읽어야 합니다. 적힌 순서대로 읽는 것이 손 계산에서 가장 흔한 실수이고, 156을 10011100이 아니라 00111001로 만듭니다. 나머지 하나하나가 실제 자릿수이며 나눗셈 횟수는 결과의 비트 길이와 정확히 같습니다.
10진수 → 2진수 변환표
프로그래밍에서 가장 자주 만나는 작은 10진수와 그 2진수 표기입니다. 외워 둘 값은 2의 거듭제곱뿐이고 나머지는 거기서 따라 나옵니다.
| 10진수 | 2진수 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 111 |
| 8 | 1000 |
| 10 | 1010 |
| 15 | 1111 |
| 16 | 10000 |
| 31 | 11111 |
| 64 | 1000000 |
| 100 | 1100100 |
| 127 | 1111111 |
| 200 | 11001000 |
| 255 | 11111111 |
| 1000 | 1111101000 |
의식하지 못하는 사이 만나는 2진수
파일 권한, 네트워크 마스크, 기능 플래그 레지스터, 이미지 채널은 모두 더 친절한 표기를 입은 2진수입니다. 156을 10011100으로 읽으면 최상위 비트와 가운데 네 비트가 켜졌다는 사실이 즉시 보입니다. 상태 레지스터가 이상할 때 실제로 알고 싶은 정보가 바로 그것입니다.
손가락으로 정확하게 세기
빠른 답이 필요하면 들어가는 가장 큰 2의 거듭제곱을 빼기를 반복합니다. 156 − 128 = 28, 28 − 16 = 12, 12 − 8 = 4, 4 − 4 = 0이므로 128 + 16 + 8 + 4 = 10011100입니다. 자리가 있거나 없거나 둘 중 하나인 기수라서 이 방법이 통합니다.
자주 묻는 질문
10진수를 2진수로 손으로 바꾸려면 어떻게 하나요?
2로 나눈 나머지를 적고 몫을 다시 2로 나누기를 몫이 0이 될 때까지 반복합니다. 나머지를 마지막 것부터 처음으로 읽으면 2진수가 됩니다. 156은 나머지가 0, 0, 1, 1, 1, 0, 0, 1이고 거꾸로 읽으면 10011100입니다.
10진수 하나에 2진수 자릿수가 몇 개나 필요하나요?
반으로 나눌 수 있는 횟수만큼, 즉 기수 2의 로그를 올림한 값입니다. 255까지는 8비트, 65535까지는 16비트, 약 43억까지는 32비트면 됩니다. 이 도구는 고정 폭으로 채우지 않고 실제 길이를 그대로 보여줍니다.
일반 계산기보다 큰 수도 변환되나요?
됩니다. 일반 계산기는 2의 53제곱을 넘으면 부동소수점으로 전환해 반올림을 시작하지만, 이 도구는 정수 연산만 사용하므로 64비트 값도 모든 자릿수가 정확하게 나옵니다.
음수는 어떻게 표시되나요?
2진수 앞에 마이너스 기호를 붙이는 부호-크기 방식입니다. 2의 보수는 비트 폭을 정해야만 의미가 생기는 다른 규약이라 여기서는 쓰지 않습니다. 32비트 2의 보수 표현이 필요하다면 코드에서 직접 지정하세요.
소수점이 있는 수도 변환할 수 있나요?
됩니다. 정수부는 정확히 변환되고 소수부는 자리마다 전개하다가 나머지가 0이 되면 멈춥니다. 10진수 0.1 같은 값은 2진법에서 전개가 끝나지 않으므로 결과를 잘라서 보여주고, 완전한 답인 척하지 않는다고 화면에 표시합니다.