변환할 수의 진법을 고르고, 그 진법으로 쓴 수를 입력하세요. 2진수·8진수·10진수·16진수의 4가지 표현을 한꺼번에 계산하고 계산 과정도 보여 줍니다.
목차
이 페이지에서 할 수 있는 것
- 변환할 수의 진법(2진수·8진수·10진수·16진수)을 고르고 수를 넣기만 하면 4가지 진법으로 나타낸 값을 한꺼번에 알 수 있습니다
- ‘16진수 2AA는 10진수로 얼마?’, ‘170을 2진수로 바꾸면?’ 같은 변환을 한 번에 할 수 있습니다
- 자릿값 전개(각 자리 숫자 × 자릿값을 모두 더하기)와, 밑으로 나누어 나머지를 늘어놓는 계산 과정도 보여 주므로 변환하는 방법 자체를 익힐 수 있습니다
- 중·고등학교 정보 수업이나 정보처리기사·정보처리기능사 필기시험에 나오는 진법 변환을 공부하고 답을 맞춰 볼 때 쓸 수 있습니다
- 공식의 쉬운 해설과 Excel·Google 스프레드시트·Python에 복사해 쓸 수 있는 수식도 이 페이지에 모아 두었습니다
이 계산은 어디에 쓰일까요?
진법 변환은 중·고등학교 정보 교과의 ‘자료의 표현’ 단원과, IT 국가기술자격인 정보처리기사·정보처리기능사 필기시험에 꾸준히 나오는 단골 주제입니다.
‘2진수 1010을 10진수로 나타내면?’, ‘10진수 45를 2진수로 나타내면?’ 같은 문제는 이 페이지의 자릿값 전개와 나머지를 늘어놓는 나눗셈 두 가지 방법 그대로입니다. 계산 과정을 보면서 연습해 두면 시험에서 막히지 않고 풀 수 있습니다.
웹 페이지의 색은 #FF5733 같은 16진수 색상 코드로 지정합니다. 빨강·초록·파랑의 세기를 각각 16진수 2자리(00~FF = 10진수 0~255)로 나열한 것이어서, #FF5733은 빨강 FF(255), 초록 57(87), 파랑 33(51)입니다.
16진수와 10진수를 오갈 수 있으면 ‘빨강을 조금 줄이고 싶다’ 같은 색의 조정을 코드의 숫자만 보고도 떠올릴 수 있습니다.
서버 관리에서 자주 쓰는 chmod 755의 755는 8진수입니다. 8진수 1자리는 2진수 3자리에 대응하고, 755를 2진수로 나타내면 111 101 101입니다. 소유자·그룹·그 밖의 사용자마다 3비트씩 ‘읽기·쓰기·실행’의 켜고 끄기를 나타낸 것입니다.
진법을 알면 이 숫자가 암호가 아니라 비트 스위치의 표로 보이게 됩니다.
네트워크의 주소인 IP 주소(예: 192.168.1.1)는 사실 8비트씩 넷으로 나눈 2진수입니다. 192는 11000000, 255는 11111111입니다.
‘서브넷 마스크 255.255.255.0은 앞의 24비트가 네트워크 부분이라는 뜻’ 같은 네트워크의 기초는 10진수와 2진수를 변환할 수 있어야 이해됩니다. 네트워크 관리사 같은 자격증과 네트워크 엔지니어 업무의 토대가 되는 지식입니다.
‘1바이트 = 8비트로 0~255(16진수로 00~FF)를 나타낼 수 있다’, ‘메모리 주소나 오류 코드가 0x7FFF 같은 16진수로 표시된다’처럼, 2진수와 16진수는 컴퓨터 내부를 배우는 데 꼭 필요한 공통 언어입니다.
비트 연산, 문자 코드, 색상 값처럼 프로그래밍을 배울 때 자주 걸리는 부분도 진법을 자유롭게 바꿀 수 있으면 훨씬 이해하기 쉬워집니다.
공식
용어·기호 해설
기호
| \(b\) | 비 | 밑(기수). 몇 진법인지를 나타내는 수로, 이 페이지에서는 2·8·10·16 중 하나입니다. (영어 base의 첫 글자) |
| \(d_i\) | 디 아이 | 오른쪽 끝에서 세어 \(i\)번째(오른쪽 끝이 0번째) 자리의 숫자입니다. 16진수에서는 A~F(10진수의 10~15)도 포함합니다. (영어 digit의 첫 글자) |
| \(i\) | 아이 | 자리의 위치입니다. 오른쪽 끝 자리가 \(i=0\)이고, 왼쪽으로 한 자리 갈 때마다 1씩 커집니다. |
| \(N\) | 엔 | 10진수로 나타낸 값입니다. 이 페이지의 변환 과정은 항상 이 10진수를 거칩니다. |
| \(\sum\) | 시그마 | ‘모두 더한다’는 뜻의 기호입니다. \(\sum_{i=0}^{k}\)는 ‘\(i\)를 0부터 \(k\)까지 바꿔 가며 모두 더한다’는 뜻입니다. |
| \(q\) | 큐 | 나눗셈의 몫입니다. 10진수를 \(n\)진수로 바꿀 때는 몫이 0이 될 때까지 나눗셈을 반복합니다. (영어 quotient의 첫 글자) |
| \(r\) | 알 | 나눗셈의 나머지입니다. 이 나머지가 \(n\)진수의 각 자리(아래 자리부터 차례로)가 됩니다. (영어 remainder의 첫 글자) |
| \(2\mathrm{AA}_{(16)}\) | 이 에이 에이(16진수) | 수의 오른쪽 아래에 작게 붙인 \((16)\)은 ‘이 수는 16진수로 쓰여 있다’는 뜻입니다. 마찬가지로 \(1010_{(2)}\)라면 2진수를 나타냅니다. 몇 진법인지 헷갈릴 수 있을 때 쓰는 표기입니다. 프로그래밍에서는 0x2AA처럼 앞에 0x를 붙여 16진수를 나타내기도 합니다. |
용어
| 진법(밑) | 수를 셀 때 몇 개를 한 묶음으로 해서 윗자리로 올릴지 정한 규칙입니다. 평소에 쓰는 수는 10개씩 묶는 10진법이고, 컴퓨터 내부는 2개씩 묶는 2진법으로 움직입니다. 이 묶음의 크기(2·8·10·16 등)를 밑 또는 기수라고 합니다. |
| 자릿값 기수법 | 자리의 위치마다 자릿값을 정해 수를 나타내는 방법입니다. 10진수 682가 \(6 \times 100 + 8 \times 10 + 2 \times 1\)을 나타내는 것과 같은 원리로, 2진수·8진수·16진수에서는 자릿값이 각각 2·8·16의 거듭제곱이 됩니다. |
| 2진수 | 0과 1의 두 가지 숫자만으로 수를 나타내는 방법입니다. 컴퓨터는 전기가 켜졌는지 꺼졌는지로 정보를 다루기 때문에 내부의 계산은 모두 2진수로 이루어집니다. |
| 8진수 | 0~7의 여덟 가지 숫자로 수를 나타내는 방법입니다. 2진수 3자리가 8진수 1자리에 대응합니다. Linux 파일 권한(퍼미션)의 755 등에 쓰입니다. |
| 16진수 | 0~9와 A~F(A가 10, B가 11, …, F가 15)의 열여섯 가지 문자로 수를 나타내는 방법입니다. 16진수 1자리가 2진수 4자리에 대응하므로, 긴 2진수를 짧게 적는 방법으로 프로그래밍에서 널리 쓰입니다. |
| 비트 | 2진수의 한 자리를 말합니다. 컴퓨터가 다루는 정보의 가장 작은 단위로, 0과 1 중 하나의 값을 가집니다. |
| 니블 | 비트 4개를 묶은 것(16진수 1자리)입니다. 니블 2개가 1바이트가 됩니다. |
| 바이트 | 비트 8개를 묶은 것(16진수 2자리)입니다. 1바이트로 00~FF의 256가지 값을 나타낼 수 있어서 바이트와 16진수는 궁합이 좋은 단위입니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘의미를 알고’ 쓸 수 있도록, 먼저 이해해 두면 좋은 내용을 정리했습니다.
| 십진법의 자릿값(초등학교) |
|
| 나눗셈과 나머지(초등학교 3~4학년, 9~10세) |
|
| 거듭제곱·지수(중학교 1학년, 12~13세) |
|
| n진법(중·고등학교 정보) |
|
Excel로 계산하는 방법
| 10진수 값 | 170 |
| 2진수 | =DEC2BIN(B1) |
| 8진수 | =DEC2OCT(B1) |
| 16진수 | =DEC2HEX(B1) |
| 2진수 | 10101010 |
| 10진수 | =BIN2DEC(B1) |
| 16진수 | 2AA |
| 10진수 | =HEX2DEC(B1) |
| 10진수 값 | 1500 |
| 16진수(BASE) | =BASE(B1,16) |
| 16진수에서 10진수로 되돌리기(DECIMAL) | =DECIMAL(B2,16) |
다만 이 함수들에는 크기 제한이 있습니다. DEC2BIN은 −512~511(2진수로 10자리까지의 결과)만, DEC2OCT는 −536,870,912~536,870,911, DEC2HEX는 −549,755,813,888~549,755,813,887까지만 다룹니다. 반대 방향의 BIN2DEC·OCT2DEC·HEX2DEC도 10자리까지만 받으며, 10자리를 넘으면 오류가 나고, 딱 10자리이면서 맨 앞 비트가 1(16진수라면 맨 앞이 8~F)인 수는 음수(2의 보수)로 읽힙니다.
더 큰 수는 네 번째 표의 BASE 함수(10진수 → n진수)와 DECIMAL 함수(n진수 → 10진수)를 쓰세요(Excel 2013 이후. 2의 53제곱 − 1, 약 9000조까지의 수를 다룰 수 있습니다).
Google 스프레드시트로 계산하는 방법
| 10진수 값 | 170 |
| 2진수 | =DEC2BIN(B1) |
| 8진수 | =DEC2OCT(B1) |
| 16진수 | =DEC2HEX(B1) |
| 2진수 | 10101010 |
| 10진수 | =BIN2DEC(B1) |
| 16진수 | 2AA |
| 10진수 | =HEX2DEC(B1) |
| 10진수 값 | 1500 |
| 16진수(BASE) | =BASE(B1,16) |
| 16진수에서 10진수로 되돌리기(DECIMAL) | =DECIMAL(B2,16) |
DEC2BIN이 −512~511까지만 다루는 등의 크기 제한도 Excel과 같습니다. 더 큰 수는 BASE·DECIMAL 함수를 쓰세요.
Python으로 계산하는 방법
number = "2AA" # 변환할 수(원래 진법으로 쓴 값)
from_base = 16 # 그 수의 진법(2, 8, 10, 16 중 하나)
value = int(number, from_base) # 먼저 10진수 정수로 바꾼다
binary = format(value, "b") # 2진수
octal = format(value, "o") # 8진수
hexadecimal = format(value, "X") # 16진수(대문자)
print(f"10진수: {value}")
print(f"2진수: {binary}")
print(f"8진수: {octal}")
print(f"16진수: {hexadecimal}")
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
N = Σ dᵢ × bⁱ
N = \sum_{i=0}^{k} d_i \times b^{i}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<munderover>
<mo>∑</mo>
<mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow>
<mi>k</mi>
</munderover>
<msub><mi>d</mi><mi>i</mi></msub>
<mo>×</mo>
<msup><mi>b</mi><mi>i</mi></msup>
</mrow>
</math>
N = sum_(i=0)^k d_i * b^i
FromDigits[{2, 10, 10}, 16]
N := add(d[i]*b^i, i = 0 .. k);
N = polyval(d, b);
N = ∑_(i=0)^k d_i × b^i
N = b × q + r (0 ≤ r < b)
N = b \times q + r \quad (0 \le r < b)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<mi>b</mi>
<mo>×</mo>
<mi>q</mi>
<mo>+</mo>
<mi>r</mi>
</mrow>
</math>
N = b q + r, \ 0 <= r < b
QuotientRemainder[682, 16]
q := iquo(n, b); r := irem(n, b);
q = floor(n/b); r = mod(n, b);
N = b × q + r (0 ≤ r < b)
h = b₃×2³ + b₂×2² + b₁×2¹ + b₀×2⁰
h = b_3 \times 2^3 + b_2 \times 2^2 + b_1 \times 2^1 + b_0 \times 2^0
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>h</mi>
<mo>=</mo>
<msub><mi>b</mi><mn>3</mn></msub><mo>×</mo><msup><mn>2</mn><mn>3</mn></msup>
<mo>+</mo>
<msub><mi>b</mi><mn>2</mn></msub><mo>×</mo><msup><mn>2</mn><mn>2</mn></msup>
<mo>+</mo>
<msub><mi>b</mi><mn>1</mn></msub><mo>×</mo><msup><mn>2</mn><mn>1</mn></msup>
<mo>+</mo>
<msub><mi>b</mi><mn>0</mn></msub><mo>×</mo><msup><mn>2</mn><mn>0</mn></msup>
</mrow>
</math>
h = b_3*2^3 + b_2*2^2 + b_1*2 + b_0
FromDigits[{b3, b2, b1, b0}, 2]
h := 8*b3 + 4*b2 + 2*b1 + b0;
h = 8*b3 + 4*b2 + 2*b1 + b0;
h = b_3 × 2^3 + b_2 × 2^2 + b_1 × 2^1 + b_0 × 2^0
ChatGPT 에게 물어서 계산하는 방법
당신은 진법 변환 계산 도우미입니다. 다음 계산은 Python 코드를 실제로 실행해서 하고, 실행 결과의 수치만을 근거로 답하세요(암산이나 추측으로 답하지 마세요). 16진수 2AA를 다음 세 가지 진법으로 변환하세요. 1. 10진수 2. 2진수 3. 8진수 16진수 → 10진수 변환에서는 각 자리의 숫자 × 자릿값(16의 거듭제곱)의 전개도 함께 보여 주세요. 사용한 코드와 실행 결과의 수치를 함께 보여 주세요.
사용법
-
1숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다