본문으로 건너뛰기
CalcMax

2진수-16진수 변환기

계산 결과

B2

16진수

4자리씩 묶음
1011 0010

2진수를 16진수로 바꾸는 변환기입니다. 10110010처럼 0과 1로만 이루어진 수를 넣으면 16진수 값과 함께, 자리를 어떻게 끊었는지도 보여 줍니다. 방법은 2진수를 오른쪽 끝부터 네 자리씩 끊어 각 묶음을 16진수 한 자리로 옮기는 것입니다. 2진수 네 자리로 만들 수 있는 경우의 수는 16가지이고, 16진수 한 자리가 나타내는 값도 16가지이므로 둘이 정확히 맞아떨어집니다. 10110010은 1011과 0010으로 끊겨 각각 B와 2가 되고, 합쳐서 B2가 됩니다. 그래서 2진수를 16진수로 바꾸는 일에는 나눗셈이 필요하지 않습니다. 자리만 세면 됩니다. 끊을 때 주의할 점이 하나 있습니다. 묶음은 왼쪽이 아니라 오른쪽부터 시작해야 하며, 맨 왼쪽 묶음이 네 자리에 모자라면 앞을 0으로 채웁니다. 10110은 그대로 다섯 자리라 1011과 0으로 끊고 싶어지지만, 오른쪽부터 세면 1과 0110이 되므로 0001과 0110으로 채워 16이 됩니다. 결과로 표시되는 묶음 줄이 바로 이 채우기를 반영한 형태입니다. 16진수 값은 언제나 대문자로 나오므로 a3f를 넣어도 A3F로 표시됩니다. 음수는 부호가 앞에 붙고 부호를 뺀 자리만 같은 방식으로 끊습니다.

열여섯 개의 네 자리 묶음과 그에 대응하는 16진수 한 자리

니블16진수 자리10진수
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15

0000부터 1111까지 열여섯 개의 묶음을 빠짐없이 늘어놓은 표입니다. 이 변환은 이 표를 외우는 일과 같습니다. 0000이 0, 0001이 1, …, 1001이 9까지는 2진수를 그대로 읽으면 되고, 1010부터 1111까지가 10부터 15까지를 나타내어 A에서 F로 적힙니다. 그래서 10진수 열이 10 이상인 줄에서만 16진수 자리가 알파벳이 됩니다. 2진수를 16진수로 바꿀 때는 오른쪽부터 네 자리씩 끊어 각 묶음을 이 표에서 찾으면 되고, 반대 방향으로는 16진수 한 자리를 표에서 찾아 네 자리로 펼치면 됩니다. 표의 수치는 페이지를 만들 때마다 다시 계산되며, 묶음은 언제나 오른쪽부터 세고 맨 왼쪽이 모자라면 0으로 채웁니다.

공식

10110010 = 1011 0010 = B2

2진수
변환할 2진수입니다. 0과 1로만 적으며, 자릿값은 오른쪽 끝이 1이고 왼쪽으로 갈수록 두 배씩 커집니다. 맨 앞의 0은 값을 바꾸지 않으므로 붙여도 되고 지워도 됩니다. 음수는 앞에 빼기 부호를 붙여 적습니다
니블
2진수 네 자리를 묶은 단위입니다. 16진수 한 자리와 정확히 같은 범위를 나타내므로 이 변환의 기본 단위가 됩니다. 4비트로 표현할 수 있는 값이 0부터 15까지 열여섯 가지이고, 16진수 한 자리가 나타내는 값도 0부터 15까지 열여섯 가지라 둘이 일대일로 맞습니다
0-9, A-F
16진수 한 자리에 쓰이는 열여섯 개의 문자입니다. 0부터 9까지는 그대로 쓰고, 10부터 15까지는 A, B, C, D, E, F로 적습니다. 10을 10으로 적으면 두 자리가 되어 버리므로 알파벳을 빌려 온 것이며, 결과는 언제나 대문자로 표시됩니다
앞을 0으로 채우기
맨 왼쪽 묶음이 네 자리에 모자랄 때 하는 처리입니다. 이때 붙는 0은 값을 바꾸지 않습니다. 채우지 않으면 묶음의 자릿수가 어긋나 10110이 16이 아니라 다른 값으로 읽힐 수 있으므로, 채우기는 계산의 일부이지 오류가 아닙니다
오른쪽부터
묶음을 시작하는 방향입니다. 왼쪽부터 끊으면 자릿수가 네의 배수가 아닐 때 모든 묶음이 어긋나므로, 언제나 오른쪽 끝에서부터 네 자리씩 셉니다. 자릿수가 네의 배수인 입력에서는 어느 쪽에서 세도 결과가 같지만, 그렇지 않을 때는 이 방향이 결과를 바꿉니다
53비트
이 페이지가 정확히 처리하는 마지막 자리입니다. 배정밀도 부동소수점의 유효 숫자가 53비트이므로 1이 53개 늘어선 2진수까지가 정확히 변환되는 값이며, 그보다 큰 수는 근삿값이 되는 대신 입력 단계에서 거부됩니다

2진수로 적힌 값을 짧게 줄여 읽고 싶을 때 쓰는 페이지입니다. 16진수는 2진수 네 자리를 한 자리로 줄여 주므로, 32비트 주소나 해시 값, 색상 코드처럼 자릿수가 긴 값을 사람이 비교하기 좋은 형태로 만들어 줍니다. 계산 없이 자리만 옮기면 되므로 손으로도 쉽게 검산할 수 있고, 이 페이지가 함께 보여 주는 묶음 줄이 그 검산을 그대로 대신합니다. 값이 아닌 비트 패턴 자체가 중요한 상황에서도 16진수가 편합니다. 예를 들어 어떤 바이트에서 위 네 비트와 아래 네 비트를 따로 보고 싶다면 16진수 두 자리로 적는 편이 2진수 여덟 자리보다 훨씬 읽기 쉽습니다. 다만 16진수는 자릿값을 더해야 값이 나오므로, 값 자체를 확인하려면 10진수 쪽을 보는 편이 빠릅니다. 방향을 헷갈리기 쉬우므로, 결과가 예상과 다르면 오른쪽부터 끊었는지부터 확인하면 됩니다.

계산 예시

  1. 10110010을 16진수로

    1. 오른쪽부터 네 자리씩 끊습니다: 1011과 0010
    2. 1011은 8 + 2 + 1 = 11이므로 B
    3. 0010은 2이므로 2
    4. 이어 붙이면 B2

    페이지가 처음 열릴 때 들어 있는 입력이자 가장 흔한 경우입니다. 여덟 자리라 네 자리씩 정확히 둘로 나뉘고, 앞을 채울 필요가 없습니다. 1011이 11이라서 B가 되고 0010이 2라서 2가 되는 것만 확인하면 되므로, 16진수 한 자리가 2진수 네 자리와 같다는 사실이 이 예 하나에 다 들어 있습니다.

  2. 1111을 16진수로

    1. 네 자리이므로 묶음이 하나입니다
    2. 1×8 + 1×4 + 1×2 + 1×1 = 15
    3. 15는 16진수로 F
    4. 결과는 한 자리인 F

    한 묶음이 나타낼 수 있는 가장 큰 값입니다. 2진수 네 자리가 모두 1이면 15이고, 그것이 16진수의 마지막 문자인 F가 됩니다. 16진수 한 자리가 왜 F에서 끝나는지, 그리고 왜 그다음 자리로 올라가는지를 보여 주는 경계값이므로, 16진수를 처음 다룰 때 한 번 짚어 둘 만합니다.

  3. 자릿수가 모자라는 10110

    1. 오른쪽부터 네 자리씩 끊습니다: 1과 0110
    2. 맨 왼쪽 묶음이 네 자리에 모자라므로 앞을 0으로 채워 0001로 만듭니다
    3. 0001은 1이고 0110은 6
    4. 이어 붙이면 16

    왼쪽부터 끊으면 1011과 0이 되어 B0이 나오지만 그것은 틀린 답입니다. 오른쪽부터 세면 1과 0110이 되고, 모자라는 자리를 0으로 채워 0001과 0110이 됩니다. 묶음 줄에 0001이 보이는 것은 이 채우기가 실제로 일어났기 때문이며, 값에는 아무 영향이 없습니다. 채우지 않은 채로 이어 붙이면 1과 6이 붙어 16이 아니라 16이 아닌 다른 수로 읽힐 수 있습니다.

  4. 음수 -10110

    1. 부호를 떼고 10110을 변환하면 16
    2. 부호를 다시 붙이면 −16
    3. 묶음 줄도 부호를 앞에 두고 −0001 0110으로 표시됩니다

    음수에서도 부호를 뺀 나머지는 양수와 똑같이 처리된다는 것을 보여 주는 예입니다. 부호는 맨 앞에 한 번만 붙고 자릿값에는 관여하지 않습니다. 여기서 쓰는 부호는 사람이 읽는 표기이며 컴퓨터가 저장하는 2의 보수 패턴이 아니므로, 실제 메모리에 들어 있는 비트를 보고 싶다면 자릿수를 정해 2의 보수를 직접 구해야 합니다.

한계

2진수 하나만 받으며 0과 1로만 이루어져야 합니다. 2진수에 없는 숫자가 섞이면 변환하지 않고 입력 칸을 빨갛게 표시하며, 소수점이 있는 값도 받지 않습니다. 정수만 다룹니다. 자릿수는 1이 53개 늘어선 2진수까지이고 그보다 큰 수는 배정밀도로 정확히 표현할 수 없어 거부합니다. 이때 16진수로는 열네 자리까지 나옵니다. 묶음은 언제나 오른쪽 끝부터 네 자리씩 세고, 맨 왼쪽 묶음이 모자라면 0으로 채웁니다. 채워진 0은 값을 바꾸지 않지만 화면에는 표시되므로, 입력한 자릿수보다 결과의 자릿수가 많아 보일 수 있습니다. 이는 오류가 아니라 네 자리 묶음을 맞추기 위한 처리입니다. 묶음 줄에서 네 자리 사이의 공백은 묶음을 구분하는 표시이며 숫자의 일부가 아닙니다. 값을 그대로 옮겨 적을 때 공백을 빼고 이어 붙이면 원래의 2진수가 되고, 공백을 남겨 두면 읽기만 편해집니다. 16진수 결과는 언제나 대문자로 나오므로 소문자로 입력해도 대문자로 돌아옵니다. 이 페이지에는 단위가 없고, 10진수로 바꾸는 일은 하지 않습니다. 값이 필요하면 2진수-10진수 변환기나 16진수-10진수 변환기를 따로 쓰면 됩니다.

자주 묻는 질문

자릿값을 더하지 않아도 되나요?
네 자리씩 끊어 옮기기만 하면 되므로 나눗셈이나 덧셈이 필요하지 않습니다. 2진수 네 자리가 나타내는 경우의 수가 16가지이고 16진수 한 자리가 나타내는 값도 16가지라 둘이 일대일로 맞기 때문입니다. 대신 10진수 값이 필요하면 자릿값을 더해야 하므로, 그때는 2진수-10진수 변환기를 쓰는 편이 빠릅니다.
결과의 맨 앞에 0이 붙어 나오는 건 오류인가요?
오류가 아닙니다. 묶음은 오른쪽 끝부터 네 자리씩 세므로 맨 왼쪽 묶음이 모자랄 수 있고, 그때는 앞을 0으로 채워 네 자리를 맞춥니다. 채워진 0은 값을 바꾸지 않습니다. 10110이 0001 0110으로 표시되는 것이 그 예이며, 채우지 않으면 묶음의 자릿수가 어긋나 값이 달리 읽힐 수 있습니다.
왼쪽부터 네 자리씩 끊으면 안 되나요?
안 됩니다. 자릿수가 네의 배수가 아닐 때 왼쪽부터 끊으면 모든 묶음이 어긋납니다. 10110을 왼쪽부터 끊으면 1011과 0이 되어 B0이라는 다른 값이 나옵니다. 오른쪽 끝에서부터 세면 1과 0110이 되고, 모자라는 자리를 0으로 채워 올바른 16이 나옵니다.
니블이 무엇인가요?
2진수 네 자리를 묶은 단위를 니블이라고 부릅니다. 16진수 한 자리와 정확히 같은 범위를 나타내므로 이 변환의 기본 단위가 됩니다. 4비트로 표현할 수 있는 값이 0부터 15까지 열여섯 가지이고 16진수 한 자리도 같은 범위이므로, 두 단위가 일대일로 대응합니다.
16진수 결과를 10진수로도 볼 수 있나요?
이 페이지는 16진수까지만 보여 줍니다. 값이 필요하면 결과로 나온 16진수를 16진수-10진수 변환기에 넣으면 됩니다. 16진수는 자리마다 16의 거듭제곱을 곱해 더하면 값이 나오며, 16진수 한 자리를 2진수 네 자리로 되돌리는 것은 이 페이지의 반대 방향입니다.
소문자로 입력해도 되나요?
입력은 0과 1로만 이루어져야 하므로 이 페이지에는 해당하지 않지만, 16진수를 입력받는 다른 페이지에서는 소문자도 받습니다. 그쪽에서도 결과는 언제나 대문자로 나오므로 2a3f를 넣으면 2A3F로 표시됩니다. 대소문자가 값에 영향을 주지는 않습니다.

참고 문헌

관련 계산기