진법 계산기
계산 결과
결과
- 10진수
- 17
- 나머지
- 0
진법은 숫자열을 값으로 바꾸는 규칙입니다. 오른쪽 끝을 0번으로 세어, 각 자리의 숫자에 진법을 그 자리 수만큼 거듭제곱한 값을 곱한 뒤 모두 더합니다. 2진법에서는 0과 1만 쓰고 왼쪽으로 한 칸 갈 때마다 두 배가 되므로, 2진수 1011은 1×8 + 0×4 + 1×2 + 1×1 = 11입니다. 16진법에서는 0부터 9까지 다음에 A부터 F가 이어지고 한 칸마다 16배가 되므로, 16진수 FF는 15×16 + 15 = 255입니다. 이 진법 계산기는 2에서 36 사이의 n진법을 하나 골라, 그 진법 안에서 사칙연산을 합니다. 진법은 다른 종류의 수가 아니라 같은 수를 다르게 적는 방법이므로, 페이지는 답을 두 가지 표기로 나란히 보여 줍니다. 2진법에서 1011 더하기 110은 10001이고, 이는 11 더하기 6인 17이며, 17은 2진법으로 10001입니다. 두 줄은 같은 말입니다. 10진수 줄은 다른 진법에서 하루를 보내지 않는 독자를 위해 있습니다. 시작하기 전에 세 가지를 알아 두면 좋습니다. 9를 넘는 숫자에는 기호가 필요하고, 오랜 관례에 따라 A부터 Z가 10부터 35를 나타냅니다. 그래서 36진법이 키보드의 문자만으로 적을 수 있는 가장 큰 진법입니다. 숫자는 진법보다 작아야만 쓸 수 있으므로 2는 2진법의 숫자가 아니고, 1012는 2진수처럼 보이지만 2진수가 아닙니다. 그리고 진법 자체는 답의 일부가 아닙니다. 10001이 17을 뜻하는 것은 진법을 2라고 정했기 때문이므로, 페이지는 숫자만 인쇄하고 진법은 사용자가 고른 필드에 맡깁니다. 계산은 평범한 사칙연산이고 바뀌는 것은 표기뿐입니다. 덧셈은 한 자리가 10이 아니라 그 진법에 도달할 때 올림이 생기므로, FF에 1을 더하면 FG에서 멈추지 않고 100으로 넘어갑니다. G가 없기 때문입니다. 16은 숫자가 아닙니다. 나눗셈은 진법 계산이 제값을 하는 자리입니다. 어떤 수를 다른 수로 나누면 몫과 나머지가 생기고, 둘 다 사용자가 고른 진법으로 인쇄됩니다. 나머지 줄은 항상 표시됩니다. 덧셈, 뺄셈, 곱셈에서는 0인데, 정수에서 남는 것이 없는 것과 나머지가 0인 것은 같은 말이기 때문입니다. 뺄셈은 0 아래로 내려갈 수 있고, 그때 답에는 평소처럼 쓴 마이너스 부호가 붙습니다. 부호는 숫자 집합의 일부가 아닙니다. 다른 진법으로 옮기는 진법 변환은 이웃한 변환기 페이지가 맡고, 이 페이지는 고른 진법 안에서 끝나는 계산을 맡습니다.
255를 2, 8, 10, 16진법으로 쓰고 자릿값까지 펼친 표
| 진법 | 그 진법에서의 표기 | 자릿값 전개 |
|---|---|---|
| 2 | 11111111 | 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 |
| 8 | 377 | 3×64 + 7×8 + 7 |
| 10 | 255 | 2×100 + 5×10 + 5 |
| 16 | FF | 15×16 + 15 |
가운데 열을 위에서 아래로 읽으면 같은 값이 네 가지로 나타납니다. 11111111, 377, 255, FF입니다. 행과 행 사이에서 수는 아무것도 달라지지 않았습니다. 달라진 것은 기호와, 한 자리가 넘어갈 때의 보폭뿐입니다. 셋째 열은 각 표기를 255로 되돌리는 계산입니다. 2진법에는 1이 여덟 개이므로 128부터 1까지의 자릿값이 모두 나타나고, 16진법에는 두 자리뿐이지만 첫 자리에 2가 아니라 16이 곱해집니다. 진법이 올라갈수록 자릿수가 줄어드는 것을 보십시오. 255를 말하는 데 2진법은 여덟 자리, 8진법은 세 자리, 10진법은 세 자리, 16진법은 두 자리면 됩니다. 진법이 클수록 같은 값을 더 적은 자리로 말할 수 있습니다. 한 자리가 더 무겁기 때문입니다. 이 맞바꿈이 진법이 존재하는 이유의 전부입니다. 16진법이 바이트에 쓰이는 것은 수학적으로 특별해서가 아니라 두 자리가 정확히 한 바이트를 덮기 때문이고, 그 아래 층에서 2진법이 쓰이는 것은 켜짐과 꺼짐밖에 없는 선이 상태를 정확히 둘 갖기 때문입니다. 이 표는 입력한 수를 따라가지 않습니다. 위의 패널이 입력에 답하고, 이 표는 한 값의 네 가지 표기를 보여 줍니다.
공식
1011 + 110 = 10001 (2진법), 11 + 6 = 17 (10진법) ⇒ 2진법의 10001은 17, 하나의 값을 두 가지로 쓴 것
- b
- 진법이며 2에서 36 사이의 정수입니다. 서른다섯 개의 선택지가 있는 목록이 아니라 그냥 숫자 입력 상자이므로, 한계는 상자 자체에서 집행됩니다. 1과 37은 계산이 시작되기 전에 거부됩니다. 1진법은 기호 하나로 0을 넘는 값을 셀 수 없어 불가능하고, 37진법은 키보드에 없는 서른일곱 번째 기호가 필요합니다
- 1011
- 2진법으로 쓴 11입니다. 1×8 + 0×4 + 1×2 + 1×1로 읽습니다. 오른쪽에서 왼쪽으로 읽어야 하는데, 거듭제곱이 그 방향으로 커지기 때문입니다. 같은 11은 10진법으로 11, 8진법으로 13, 16진법으로 B입니다
- 10001
- 1011 + 110의 답을 그대로 2진법으로 쓴 것입니다. 1×16 + 0×8 + 0×4 + 0×2 + 1×1이므로 17입니다. 가는 길에 올림이 두 번 있었는데, 일의 자리가 2에 닿았고 네의 자리도 2에 닿았습니다. 올림은 한 칸씩 왼쪽으로 옮겨 갑니다. 10진법에서 한 자리가 10에 닿을 때 올림이 가는 것과 똑같습니다
- FF
- 15 곱하기 16 더하기 15이므로 255입니다. 16진법은 바이트 하나에 딱 맞는 진법입니다. 두 자리면 0부터 255까지 모두 덮으므로, 바이트가 있는 곳마다 이 진법이 따라옵니다. A부터 F는 9 다음에 오는 여섯 개의 숫자입니다
- 17 ÷ 5 = 3 r 2
- 나눗셈을 풀어 쓴 것입니다. 2진법에서 같은 나눗셈은 10001 ÷ 101 = 11 나머지 10이고, 페이지는 몫을 결과로, 나머지를 따로 한 줄로 인쇄합니다. 나머지는 언제나 나누는 수보다 작습니다. 그래야 분수가 아니라 나머지입니다
- A to Z
- 10진법을 36진법까지 끌어올리는 스물여섯 개의 추가 숫자입니다. A는 10, B는 11이고 Z는 35입니다. 대문자와 소문자 모두 되고, 페이지는 대문자로 인쇄합니다
다른 진법을 쓰는 시스템에서 값을 읽어내는 것이 가장 흔한 쓰임입니다. 메모리 덤프는 바이트를 16진수 두 자리로 인쇄하고, 파일 권한이 755로 보이는 것은 세 자리가 각각 세 비트를 담기 때문이며, 서브넷 마스크는 여덟 비트짜리 네 묶음이고, IPv6 주소는 처음부터 끝까지 16진수입니다. 이때 원하는 것은 10진수 값이 아니라 기계가 보는 그 진법입니다. 같은 시스템에 값을 써 넣는 일은 거울상입니다. 레지스터의 비트 패턴을 정하거나, 빨강, 초록, 파랑 바이트로 색을 만들거나, 시프트한 값이 왜 음수로 나왔는지 따지는 일은 모두 10진법이 아닌 진법에서 하는 계산입니다. 학교에서는 진법 계산을 두고 자릿값 체계가 사실이 아니라 선택임을 보여 주는 단원으로 가르칩니다. 연습 문제는 이 페이지가 하는 일과 같습니다. 2진법에서 올림을 하고, 8진법에서 빌려 오고, 양쪽을 같은 진법으로 읽으면 같은 연산이 어느 진법에서나 같은 답을 준다는 것을 확인합니다. 네 번째 쓰임은 자기 계산을 검산하는 것입니다. 2진법에서 1011 더하기 110이 10진수 17이 아니면 두 표기 중 하나가 틀렸고, 두 줄이 한 페이지에 있으면 그 확인이 가능해집니다. 진법이 2나 16일 때는 전용 페이지가 더 깊이 들어갑니다. binary-calculator와 hex-calculator는 진법을 미리 채워 둔 같은 계산이고, 변환기 두 페이지는 연산 없이 진법만 옮기는 일을 맡습니다
계산 예시
2진법의 덧셈: 1011 + 110
- 무엇을 더하는지 알기 위해 두 피연산자를 10진수로 읽습니다. 1011은 11, 110은 6입니다
- 11 + 6 = 17
- 17을 2진법으로 씁니다. 17 = 16 + 1이므로 자리는 1 0 0 0 1입니다
- 2진법의 답은 10001이고, 10진수 줄이 그것이 17임을 확인해 줍니다
기본 입력이고, 아래 표가 다른 진법에서 같은 일을 훑는 그 값입니다. 두 문자열을 자리마다 더해도 같은 답이 나옵니다. 1 + 0은 1, 1 + 1은 0에 올림 1, 다음 0 + 1에 올림을 더하면 0에 올림 1, 마지막 올림이 왼쪽에 새 자리를 만듭니다. 한 자리가 2에 닿을 때 올린다는 것이 2진법 덧셈의 전부이고, 그 올림 때문에 피연산자가 네 자리와 세 자리인데 답은 다섯 자리인 10001이 됩니다.
마지막 자리를 넘어가는 올림: 16진법의 FF + 1
- FF는 15×16 + 15 = 240 + 15 = 255입니다
- 1을 더하면 256입니다
- 256을 16진법으로 씁니다. 256 = 1×256 + 0×16 + 0이므로 자리는 1 0 0입니다
- 답은 16진법의 100이며, 이는 100이 아니라 256입니다
이 예시가 존재하는 이유인 함정: 100은 10진법에서는 작은 수지만 16진법에서는 훨씬 큰 수입니다. 자리마다 읽어 보면 왜 이렇게 넓어지는지 보입니다. F에 1을 더하면 16이고, 16은 16진법의 숫자가 아니므로 올림이 생기면서 0을 남기고, 올라간 1이 꽉 찬 F 위에 떨어져 다시 올림을 냅니다. 덧셈 한 번에 답이 두 자리 올라갔습니다. 10진법에서 99 + 1이 100이 되는 것과 같은 사건이고, 바이트가 255에서 256으로 넘어갈 때 두 번째 바이트가 필요한 이유입니다.
나머지가 있는 나눗셈: 2진법의 1011 ÷ 10
- 1011은 11, 10은 2입니다
- 11 ÷ 2 = 5 나머지 1
- 5를 2진법으로 씁니다. 5 = 4 + 1이므로 자리는 1 0 1입니다
- 몫은 101이고 나머지 줄은 1이며, 101은 5이므로 10진수 줄이 그것을 확인해 줍니다
네 연산 중 나머지가 0이 아닌 유일한 경우이고, 나머지 줄이 페이지에 있는 이유입니다. 몫은 정수 부분만이라는 점에 주목하십시오. 11을 2로 나눈 값은 5.5인데, 페이지는 10.1이나 101.1이 아니라 나머지 1을 붙인 101을 인쇄합니다. 나머지는 답을 정수 안에 붙잡아 두기 때문입니다. 그 반은 바로 그 1에 들어 있습니다. 검산은 5 × 2 + 1 = 11이고, 어느 진법에서나 성립합니다.
한계
진법은 2에서 36 사이의 정수여야 합니다. 1은 불가능한데, 숫자 하나로는 0 말고는 어떤 값도 표현할 수 없기 때문이고, 37은 서른일곱 번째 기호가 필요합니다. 두 값 모두 계산이 시작되기 전에 필드가 거부합니다. 소수와 분수는 반올림하지 않고 거부하며, 피연산자 앞의 마이너스 부호도 마찬가지입니다. 이 페이지는 숫자를 파싱하고, 부호나 소수점은 숫자가 아닙니다. 고른 진법에 비해 너무 큰 숫자는 별개의 경우이고, 어떻게 처리되는지 분명히 말해 둘 가치가 있습니다. 진법을 2로 두고 1012를 입력하면 문제가 된 숫자를 짚어 주는 메시지가 아니라 일반 계산 오류가 나옵니다. 이는 감독 소홀이 아니라 의도한 맞바꿈입니다. 입력 상자의 검사는 문자열 하나만 받고 그 밖에는 아무것도 받지 못하므로 옆에 있는 진법 필드를 읽을 수 없고, 정직한 선택지는 어떤 진법에서든 합법일 수 있는 숫자열을 받아들이거나 아무거나 다 받아들이는 것 둘뿐이었습니다. 페이지는 앞의 것을 택했습니다. 실질적인 결과는 상자는 깨끗하게 남고 오류가 결과 패널에 나타난다는 것입니다. 답이 틀리는 일은 없고, 다만 설명이 덜 친절할 뿐입니다. 두 피연산자 모두 60자와 double이 정확히 담을 수 있는 가장 큰 정수인 9007199254740991로 제한됩니다. 이는 10진법으로 열여섯 자리, 2진법으로 대략 쉰 자리입니다. 답에도 같은 천장이 적용됩니다. 정확히 계산한 뒤 확인하므로, 결과가 그 한계를 넘어서는 연산은 반올림된 값으로 인쇄되지 않고 거부됩니다. 문자는 대소문자 어느 쪽으로 입력해도 되고 대문자로 인쇄되므로, ff와 FF는 같은 입력입니다. 앞에 붙은 0은 받아들이고 무시하므로 00001011과 1011은 같은 수이고 둘 다 1011로 인쇄됩니다. 아래 참고표는 2, 8, 10, 16진법에서 255로 고정되어 있고 입력한 수를 따라가지 않습니다. 패널은 입력한 수에 답하고, 표는 한 값의 네 가지 표기를 보여 줍니다.
자주 묻는 질문
- 10진법이 아닌 진법에서는 두 수를 어떻게 더하나요?
- 10진법에서 하듯 오른쪽부터 자리마다 더하되, 한 자리가 10에 닿을 때가 아니라 그 진법에 닿을 때 올림을 합니다. 2진법에서는 올림 기준이 2 하나뿐이므로 1 + 1은 0에 올림 1입니다. 그래서 1011 + 110은 10001입니다. 둘의 자리와 넷의 자리가 각각 넘쳐서 다음 자리로 1을 밀어 올렸기 때문입니다. 올림을 따라가기 번거로우면 두 피연산자를 10진수로 바꾸어 계산하고 다시 되돌리면 됩니다. 이 페이지의 10진수 줄이 보여 주는 것이 그것이고, 언제나 같은 답이 나옵니다.
- 진법이 2일 때 1012는 왜 실패하나요?
- 2가 2진법의 숫자가 아니기 때문입니다. 2진법의 숫자는 0과 1뿐입니다. 규칙은 숫자가 진법보다 작아야 한다는 것이므로, 2진법은 0과 1, 8진법은 0부터 7, 10진법은 0부터 9, 16진법은 0부터 9와 A부터 F를 씁니다. 이때 문제가 된 숫자를 짚어 주는 메시지가 아니라 일반 계산 오류가 나오는데, 이는 알려진 거친 모서리입니다. 입력 상자의 검사는 입력한 문자열만 보고 고른 진법은 보지 못하므로, 어떤 진법에서든 합법일 수 있는 숫자열을 받아들이고 진법에 따른 판단은 계산 쪽에 맡깁니다. 답이 틀리는 일은 없지만 설명이 마땅한 것보다 얇습니다.
- 어떤 진법을 쓸 수 있고, 왜 36에서 멈추나요?
- 2에서 36까지의 정수라면 무엇이든 됩니다. 상한은 수학이 아니라 키보드가 정합니다. 9를 넘는 숫자에는 기호가 필요하고, 관례적인 기호는 A부터 Z까지 스물여섯 개이므로 10 더하기 26은 36입니다. 1진법이 불가능한 이유는 다릅니다. 숫자가 하나뿐이면 0보다 큰 값을 쓸 수 없습니다. 모든 자리가 1의 값을 가지므로 2에 도달할 방법이 없기 때문입니다.
- 16진법의 100은 백과 같은 값인가요?
- 아니며, 이것이 이 페이지의 두 번째 예시가 막으려는 실수입니다. 16진법에서 100은 1×256 + 0×16 + 0이므로 256입니다. 숫자는 같은 문자이지만 자리가 한 칸마다 10배가 아니라 16배씩 무거워지므로, 같은 세 기호가 다른 값을 나타냅니다. 페이지의 10진수 줄은 어느 쪽으로 읽어야 할지 헷갈리지 않게 하려고 있습니다.
- 덧셈인데도 나머지 줄이 항상 나오는 이유는 무엇인가요?
- 정수에서는 남는 것이 없는 것과 나머지가 0인 것이 같은 말이고, 나타났다 사라지는 줄보다 늘 있는 줄이 읽기 쉽기 때문입니다. 덧셈, 뺄셈, 곱셈에서는 그 줄이 0으로 인쇄됩니다. 나머지가 0이 아닌 값은 나눗셈만 만들 수 있고, 그때 그 줄은 똑 떨어지지 않은 몫이 버린 부분을 담습니다. 2진법의 1011 ÷ 10은 1을 남기는데, 그것이 11 ÷ 2에서 몫이 버린 반입니다.
- 이 진법 계산기로 10진법 계산을 해도 되나요?
- 됩니다. 평범한 계산기와 이 페이지가 같은 답을 내는지 확인하는 데 쓸모가 있습니다. 진법을 10으로 두면 숫자도, 올림도, 답의 형식도 그대로이므로 모든 것이 예상대로 움직입니다. 얻는 것은 나머지 줄과 진법을 명시적으로 밝혀 준다는 점이고, 잃는 것은 없습니다. 이웃 페이지는 반대 방향입니다. binary-calculator와 hex-calculator는 진법을 2와 16으로 미리 정해 둔 같은 계산이고, 변환기들은 연산 없이 값의 진법만 바꾸는 일을 맡습니다.
참고 문헌
- Base — 위치 기수법이 무엇인지, 진법 b 전개의 각 자리를 어떻게 읽는지, 그리고 진법이 1보다 큰 정수여야 하는 이유 — Wolfram MathWorld (United States)
- Hexadecimal — 16진법, 9를 넘는 여섯 문자, 그리고 16진수 두 자리가 한 바이트가 되는 관례 — Wolfram MathWorld (United States)
- Binary — 2진법과 그 숫자가 나타내는 자릿값 1, 2, 4, 8 — Wolfram MathWorld (United States)
- 教育部关于印发义务教育课程方案和课程标准(2022年版)的通知 — 이 통지의 첨부 목록 제5항이 《义务教育数学课程标准(2022年版)》에 해당하며, 진법과 자릿값 기수법은 수학 교과와 정보 교과가 서로 만나는 내용이므로 원문과 학년군 구분은 이 첨부를 기준으로 합니다 — 中华人民共和国教育部