본문으로 건너뛰기
CalcMax

16진수 계산기

계산 결과

2A5A

16진수

10진수
10,842
2진수
10101001011010
나머지
0

16진수 계산기는 16진수 두 개를 받아 덧셈, 뺄셈, 곱셈, 나눗셈을 수행하고, 답을 16진수와 10진수, 2진수 세 가지로 보여 줍니다. 16진법은 밑이 16인 진법이라 10진법이 열 개를 쓰는 자리에 열여섯 개의 글자가 필요합니다. 모자라는 여섯 개를 알파벳에서 빌려 왔고, A부터 F까지가 10부터 15까지를 나타냅니다. 표기는 이것이 전부입니다. A는 어떤 암호나 약어가 아니라 9 다음에 오는 글자일 뿐입니다. 네 가지 연산은 10진수에서 하던 것과 같습니다. 자리마다 계산하고 자리를 올리는 규칙도 같은데, 밑이 10이 아니라 16이므로 9를 넘을 때가 아니라 F를 넘을 때 자리를 올립니다. 답을 세 번 보여 주는 이유는 세 가지 읽기가 서로 다른 사람에게 쓰이기 때문입니다. 16진수는 이 값을 실제로 적는 형태이고, 10진수는 대부분의 사람이 어림잡아 확인할 수 있는 형태이며, 2진수는 바탕이 되는 비트입니다. 16진수 한 자리가 2진수 네 자리에서 나왔으므로 이 셋은 같은 값의 다른 옷입니다. 나눗셈은 정수 나눗셈이라 소수점이 생기는 대신 나머지가 따로 한 줄에 남습니다. 나머지 줄은 네 연산 모두에 표시되며, 덧셈과 뺄셈, 곱셈에서는 0으로 채워집니다. 그 0은 나머지가 없다는 뜻이고 계산이 실패한 것이 아닙니다. 대소문자는 가리지 않습니다. 2a3f와 2A3F는 같은 수로 읽히고, 답은 입력한 모양과 상관없이 항상 대문자로 나옵니다.

공식

2A3F + 1B = 2A5A (10815 + 27 = 10842)

2A3F
첫 번째 수이며 16진법으로 적습니다. 여기서 글자는 숫자입니다. A가 10, B가 11이고 F가 15입니다. A를 다른 값으로 읽는 것이야말로 이 페이지가 막으려는 실수입니다
+ − × ÷
수행할 연산입니다. 10진수 산술과 똑같이 자리마다 계산하되 밑이 10이 아니라 16이므로, 그 자리의 합이 F를 넘는 순간 자리를 올립니다
F + 1 = 10
이 밑에서의 받아올림 규칙입니다. 15에 1을 더하면 쓸 글자가 없어져 새 자리가 시작됩니다. 10진수에서 9 + 1 = 10이 되는 것과 같은 사건이며, 밑이 여섯 칸 더 멀리 있을 뿐입니다
자리 × 16ⁿ
10진수 값을 만드는 방법입니다. 각 자리의 글자에 그 자리의 값을 곱해 모두 더합니다. 2A3F가 10815가 되는 것이 이 경로이며, 8192와 2560과 48과 15를 더한 값입니다
한 자리 = 4비트
이 밑을 쓰는 이유입니다. 16진수 한 자리는 2진수 네 자리를 정확히 담으므로 한 바이트가 두 글자로 끝납니다. 두 표기 사이를 옮기는 데에는 계산이 필요하지 않고 네 자리씩 묶기만 하면 됩니다
나머지
나눗셈이 딱 떨어지지 않았을 때 남는 값입니다. 이 줄은 언제나 표시되며, 나머지가 생길 수 없는 나머지 세 연산에서는 0으로 나옵니다. 그 0은 나머지가 없다는 뜻이고 줄이 채워지지 않은 것이 아닙니다
53비트
이 페이지가 받는 입력의 폭입니다. 9,007,199,254,740,991까지이며 16진수로는 열네 글자인 1FFFFFFFFFFFFF입니다. 그보다 넓으면 기계가 이웃한 정수를 구분하지 못해 계산이 조용히 정확하지 않게 됩니다

16진수는 사람이 2진수를 읽어야 할 때의 모습입니다. 값이 16비트 이상인 곳, 곧 메모리 주소나 색상, 해시, 기계어 목록, 장치 레지스터 덤프, 네트워크 패킷 캡처에서는 이 밑으로 값이 인쇄되며, 그 값들로 계산하는 일은 그 층에서 일하는 사람에게 매일의 업무입니다. 포인터에 오프셋을 더하거나 구조체의 크기를 세고, 체크섬을 계산하고, 디버깅 중에 주소 범위를 훑거나 마스크가 어떤 비트를 켜는지 확인하는 일이 모두 16진수에 하는 연산입니다. 답 옆에 붙는 2진수 읽기는 그 결과를 다시 플래그와 필드로 되돌려 줍니다. 디자이너와 프런트엔드 개발자는 색상 값에서 이 표기를 만나는데, 채널마다 두 글자씩 붙은 짝이 화면이 원하는 바이트와 정확히 같습니다. 반대 방향으로도 쓰입니다. 10진수로 알고 있는 값을 사양서와 비교하거나 도구에 붙여 넣기 위해 16진수로 바꾸고, 2진수 읽기로 어떤 비트가 실제로 켜져 있는지 확인합니다. 진법을 배우는 학생에게도 같은 이점이 있는데, 자릿값을 늘어놓기 전까지는 임의로 보이던 글자들이 그때 제자리를 찾습니다.

계산 예시

  1. 2A3F와 1B 더하기

    1. 두 수의 오른쪽을 맞춰 씁니다: 2A3F와 001B
    2. 맨 오른쪽 자리: F + B는 15 + 11 = 26이고 26 = 16 + 10이므로 A를 쓰고 1을 올립니다
    3. 다음 자리: 3 + 1에 올린 1을 더해 5이므로 5를 씁니다
    4. 다음 자리: A + 0 = A이므로 A를 씁니다
    5. 맨 왼쪽 자리: 2 + 0 = 2이므로 2를 씁니다
    6. 결과는 2A5A이고 10진수로는 10842입니다

    페이지가 처음 열릴 때 들어 있는 입력이며, 받아올림이 글자 경계를 넘는 경우를 보여 줍니다. F에 B를 더하면 스물여섯이고 이는 열여섯 하나에 열이 남은 값이라, 적히는 글자가 두 자리 수가 아니라 A가 됩니다. 2진수 읽기는 같은 비트를 네 개씩 다시 묶은 것이므로 전체를 검산하는 데 쓸모가 있습니다.

  2. 2A3F를 1B로 나누기

    1. 10진수로 옮기면 10815를 27로 나누는 셈입니다
    2. 27은 10815에 정확히 사백 번 들어가고 15가 남습니다
    3. 사백은 16진수로 190이고 남은 열다섯은 F입니다
    4. 결과는 190에 나머지 F로 표시됩니다

    나머지가 F, 곧 열다섯인 경우입니다. 나누는 수보다 작은 값인데도 글자가 필요합니다. 나머지 줄이 언제나 자리를 차지할 값어치가 있다는 것을 보여 주는 예이기도 합니다. 이 줄이 없으면 답이 190으로만 보이는데, 400 곱하기 27은 10800이라 10815가 되지 않습니다.

  3. 같은 계산을 소문자로

    1. 소문자와 대문자는 같은 숫자입니다. a는 A와 똑같이 열입니다
    2. 계산은 달라지지 않으므로 답도 같은 2A5A입니다
    3. 입력한 모양과 상관없이 답은 대문자로 인쇄됩니다

    두 관례가 모두 현장에서 쓰이기 때문에 알아 둘 만합니다. CSS 색상 값은 거의 항상 소문자로 적히고 디스어셈블러와 데이터시트는 대문자로 인쇄하는데, 어느 쪽도 틀리지 않았습니다. 정규화되는 것은 인쇄되는 답뿐이며, 그 방향은 대문자 쪽입니다.

한계

16진수 정수만 다룹니다. 16진수에도 소수점이 없고 소수 입력도 받지 않으므로 2A.8은 받지 않습니다. 나눗셈이 딱 떨어지지 않으면 소수점이 있는 답 대신 0 방향으로 버린 몫과 나머지를 냅니다. 입력은 1FFFFFFFFFFFFF, 곧 9,007,199,254,740,991까지이며, 이는 기계 수가 이웃한 정수를 구분하지 못하게 되는 폭입니다. 결과도 같은 상한을 지키므로 넘치면 근삿값으로 답하는 대신 거부합니다. 음수 결과는 2의 보수로 적지 않고 앞에 빼기 부호를 붙입니다. 고정된 폭도 가정하지 않으므로 여기서 1B는 두 자리 수이고 어떤 값의 아래 바이트가 아닙니다. 소문자도 받으며 답은 대문자로 인쇄됩니다. 0으로 나누는 것은 거부합니다. 이 페이지는 세 가지 진법으로 계산과 변환을 하지만 비트 연산은 하지 않으며, AND나 OR, XOR, 시프트는 여기에 없습니다.

자주 묻는 질문

글자들은 무슨 뜻인가요?
숫자입니다. 16진법은 서로 다른 글자 열여섯 개가 필요한데 익숙한 숫자는 열 개뿐이라, A부터 F까지가 10부터 15까지를 대신합니다. A가 10이고 F가 15입니다. 글자를 고른 데 어떤 암호가 숨어 있는 것은 아니며, 알파벳에서 순서대로 가져왔을 뿐입니다. 서로 다른 기호 열여섯 개라면 무엇이든 같은 역할을 합니다. 대문자와 소문자는 여기서 완전히 같은 숫자입니다.
2진수에서는 1 + 1이 자리를 올리는데 여기서는 왜 안 올라가나요?
밑이 달라서 자리가 소진되는 지점이 다르기 때문입니다. 2진법에는 2를 적을 글자가 없어 1이 둘 모이면 곧바로 올라갑니다. 16진법에는 15까지 적을 글자가 있어 합이 F를 넘을 때에야 올라갑니다. 2 더하기 2는 어느 진법에서나 4이고, 달라지는 것은 세는 기호뿐입니다.
입력한 글자의 대소문자가 결과에 영향을 주나요?
주지 않습니다. 2a3f와 2A3F는 같은 수이고 둘 다 받습니다. 글자가 숫자이고 숫자는 대소문자를 가리지 않기 때문입니다. 답은 어느 쪽으로 입력하든 대문자로 인쇄됩니다. 두 관례가 모두 현장에서 쓰입니다. CSS 색상 값은 보통 소문자로 적고 디스어셈블러와 데이터시트는 대문자를 쓰므로, 둘 다 받아 주는 데 드는 비용이 없고 한쪽을 거부하는 것은 자의적입니다.
가장 큰 수는 얼마까지 넣을 수 있나요?
1FFFFFFFFFFFFF이고 16진수 열네 글자, 10진수로 9,007,199,254,740,991입니다. 2진수로는 1 뒤에 1이 쉰세 개 붙은 수입니다. 그보다 넓으면 기계가 이웃한 정수를 구분하지 못해 계산이 조용히 정확하지 않게 되므로, 더 넓은 입력은 잘라서 받는 대신 거부합니다. 결과가 같은 상한을 넘을 때도 거부합니다.
진법 변환기와 같은 건가요?
진법 변환기의 계산 절반에 해당합니다. 이 페이지는 두 수와 연산을 받고, 값을 하나만 받아 진법 사이를 옮기는 페이지는 따로 있으며 이 페이지에서 링크되어 있습니다. 입력 진법과 출력 진법을 고르는 드롭다운을 두고 한 페이지로 합치는 설계도 있지만, 그러면 입력한 것의 모양을 검사할 수 없게 됩니다. 아무 진법이나 받는 페이지는 2G가 고른 진법의 수가 아니라고 알려 줄 수 없습니다.
나머지 줄은 왜 항상 있나요?
결과 패널이 연산에 따라 모양이 바뀌는 목록이 아니라 고정된 줄 묶음이기 때문이며, 나타났다 사라지는 줄은 그대로 있는 줄보다 읽기 어렵습니다. 정수의 덧셈과 뺄셈, 곱셈에는 나머지가 생길 수 없으므로 그때는 0으로 표시되고, 그 0은 자리를 채우는 값이 아니라 정직한 답입니다. 나눗셈에서는 잘린 몫이 정확한 답처럼 보이지 않게 막아 줍니다.

참고 문헌

관련 계산기