진법

계산 비교

다운로드

이번 계산의 입력값과 결과, 그리고 비교하신 추가 계산이 모두 포함됩니다.

같은 값을 2진법, 8진법, 10진법, 16진법으로 다시 쓰기

진법(또는 “기수”)은 숫자 체계가 다음 자릿값으로 넘어가기 전에 사용하는 서로 다른 숫자의 개수입니다 — 10진법은 10개(0-9), 2진법은 2개(0-1), 8진법은 8개(0-7), 16진법은 16개(0-9 다음 A-F)를 사용합니다. 이 네 가지 진법 중 어느 것으로든 자연수를 입력하면 이 계산기가 같은 값을 네 가지 진법 모두로 동시에 보여 줍니다.

2진법은 컴퓨터가 내부적으로 모든 값을 표현하는 방식입니다(각 자리가 하나의 “비트”입니다). 16진법은 프로그래밍에서 2진법을 줄여 쓰는 흔한 방법입니다(각 16진수 자리가 정확히 4개의 2진수 자리를 대신하므로 읽고 입력하기 훨씬 간결합니다). 8진법은 오래된 유닉스 파일 권한이나 일부 저수준 환경에서 등장합니다. 10진법은 그냥 일상적으로 쓰는 10진수 체계입니다.

계산식

모든 위치기수법은 같은 방식으로 작동합니다: 각 자리를 그 자릿값에 해당하는 진법의 거듭제곱과 곱한 뒤 모두 더합니다:

=i=0ndi×진법i\vA{\text{값}} = \sum_{i=0}^{n} d_i \times \vB{\text{진법}}^i

여기서 did_i는 위치 ii의 자릿수입니다(가장 오른쪽 자리를 0으로 셉니다). 다른 진법으로 변환할 때는 10진수 값을 새 진법으로 반복해서 나누며 각 나머지를 기록합니다 — 위 합산의 역순 입니다.

계산 예시

2진수 11111111을 다른 세 진법으로 변환해 보겠습니다:

  1. 오른쪽에서 왼쪽으로 읽으며, 각 1이 자릿값을 더합니다: 27+26+25+24+23+22+21+20=2552^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 = 255.
  2. 10진법: 255.
  3. 8진법: 255를 8로 반복해서 나누면(255 ÷ 8 = 31 나머지 7, 31 ÷ 8 = 3 나머지 7, 3 ÷ 8 = 0 나머지 3) 나머지를 아래에서 위로 읽어 377이 됩니다.
  4. 16진법: 255 ÷ 16 = 15 나머지 15, 15 ÷ 16 = 0 나머지 15 — 두 나머지 모두 15(16진법으로 F)이므로 FF가 됩니다.

고려해야 할 주요 요소

  • 1바이트(8비트)는 정확히 256개의 서로 다른 값을 나타낼 수 있습니다 — 10진수로는 0부터 255까지, 16진수로는 00부터 FF까지입니다. 이것이 바로 255/FF가 컴퓨팅에서 그토록 흔한 기준값인 이유입니다 — 이는 1바이트가 가질 수 있는 최댓값이며, RGB 색상 채널(채널당 0-255)부터 네트워킹, 파일 형식까지 어디에서나 등장합니다.
  • 8진법은 오래된 컴퓨터 워드 크기 때문에 오늘날보다 역사적으로 더 흔히 사용되었습니다. 8진법(밑 8)은 2진수 3자리 그룹에 깔끔하게 대응되므로 3비트로 나누어떨어지는 워드 크기로 설계된 컴퓨터에 적합했습니다 — 현대 컴퓨팅은 대부분 4비트 그룹에 대응되는 16진법으로 옮겨갔는데, 현대 하드웨어 대부분이 4와 8로 나누어떨어지는 워드 크기를 사용하기 때문입니다. 다만 8진법은 유닉스 파일 권한 표기(예: chmod 755)처럼 특정 맥락에서는 여전히 등장합니다.
  • 프로그래머의 흔한 실수 중 하나는 맥락만으로 숫자의 진법을 혼동하는 것입니다. 숫자 “10”은 진법에 따라 매우 다른 값을 의미합니다 — 10진법에서는 10, 2진법에서는 2, 8진법에서는 8, 16진법에서는 16입니다 — 이것이 프로그래밍 언어가 어떤 진법을 의도했는지에 대한 모호함을 없애기 위해 일반적으로 명시적인 접두사(16진수의 0x나 2진수의 0b 등)를 요구하는 이유입니다.
  • 어떤 자연수든 이론적으로는 이 네 가지뿐 아니라 어떤 진법으로도 표현할 수 있습니다. 2진법, 8진법, 10진법, 16진법은 단지 컴퓨팅과 일상 수학에서 가장 흔히 실제로 사용되는 네 가지 진법일 뿐입니다 — 이 계산기가 사용하는 것과 동일한 위치기수법 원리는 밑 3, 밑 20, 또는 (시간과 각도를 전통적으로 나누는 기준인) 밑 60 등 어떤 진법으로도 확장됩니다.

흔한 실수

  • 접두사 없는 혼합 진법 숫자를 기본적으로 10진수로 읽는 것. “10”은 10진법에서는 십을 의미하지만 2진법에서는 이일 뿐입니다 — 계산하기 전에 그 숫자가 어떤 진법으로 쓰였는지 항상 확인(또는 명시)하세요.
  • 앞의 0이 값을 바꾼다고 가정하는 것. 10진법과 마찬가지로, 2진법의 001111과 같은 값입니다 — 앞의 0은 (바이트 전체를 표시하는 것 같은) 고정 너비 서식에서만 의미가 있으며, 숫자의 실제 값에는 영향이 없습니다.
  • 9보다 큰 16진수 자리는 두 자리 숫자가 아니라 문자를 사용한다는 것을 잊는 것. 16진법의 십은 10이 아니라 A로 씁니다 — 16진법으로 10이라고 쓰면 실제로는 10진법의 십육을 의미하며, 큰 오차의 흔한 원인이 됩니다.
  • 음수를 직접 변환하려고 시도하는 것. 위 FAQ에서 언급했듯이, 음수 2진법/16진법 값은 선택한 비트 폭과 2의 보수 방식에 따라 달라집니다 — 음이 아닌 자연수처럼 하나의 명확한 변환 방법이 존재하지 않습니다.

알아두면 유용한 정보

  • 임의의 숫자가 아니라 네트워크 주소로 작업 중이신가요? IP 서브넷 계산기는 동일한 2진법/10진법 관계를 IPv4 주소에 특화하여 적용합니다.
  • 매우 크거나 매우 작은 10진수를 간결한 형태로 표현해야 하나요? 과학적 표기법 계산기는 그런 종류의 변환을 대신 처리합니다.
  • 훨씬 더 오래된, 위치 표기법과 관련된 숫자 체계가 궁금하신가요? 로마 숫자 계산기는 완전히 다른(비위치적) 방식을 사용하는 로마 숫자로 변환하고 되돌립니다.

출처: 표준 위치기수법 변환.

자주 묻는 질문

진법(기수)이란 무엇인가요?

진법은 숫자 체계가 다음 자릿값으로 넘어가기 전에 사용하는 서로 다른 숫자의 개수입니다. 10진법(10진수)은 0-9의 숫자를 사용하고, 2진법(2진수)은 0과 1만 사용하며, 8진법(8진수)은 0-7을, 16진법(16진수)은 0-9에 이어 A-F 문자로 10-15를 나타냅니다.

컴퓨터는 왜 2진법을 사용하나요?

컴퓨터 하드웨어는 완전히 켜지거나 완전히 꺼지는 스위치로 만들어져 있으며, 이는 2진법의 두 숫자(1과 0)에 자연스럽게 대응됩니다. 프로그래머는 보통 10진법이나 16진법처럼 사람이 읽기 쉬운 진법을 사용하지만, 컴퓨터가 저장하거나 처리하는 모든 값은 결국 2진법으로 표현됩니다.

프로그래밍에서는 왜 2진법 대신 16진법을 사용하나요?

각 16진수 자리는 정확히 4개의 2진수 자리(비트)를 나타내므로, 16진수는 같은 값을 나타내는 2진수보다 길이가 약 4분의 1로 줄어듭니다 - 길게 늘어선 1과 0의 문자열보다 사람이 읽고, 입력하고, 비교하기 훨씬 쉽습니다.

이 계산기는 음수도 처리할 수 있나요?

아니요 - 2진법이나 16진법으로 음수를 표현하려면 고정된 비트 폭과 2의 보수 규칙을 정해야 하는데, 이는 상황(8비트, 16비트, 32비트 등)에 따라 달라집니다. 이 계산기는 변환이 명확한 음수가 아닌 자연수로 범위를 한정합니다.

나이를 확인해 주세요

계정을 만들려면 출생 월과 연도를 알려주세요.