진법 변환기: 풀이 과정까지 보여 주는 진수 변환

진법 변환기에 수를 입력하고, 몇 진수의 수인지와 몇 진수로 바꿀지 고르세요. 아주 큰 수도 정확히 바꾸고 순환소수도 찾아냅니다. 나눗셈 반복, 자릿값 더하기, 소수의 곱셈까지 풀이 과정을 모두 보여 주므로 진법 변환 방법을 익히는 데도 좋습니다.

출처: 위키백과: 기수법 (자릿값과 진법). 업데이트: .

예: 255, −42, 0.1, FF, 0x1F (접두사 0x, 0b, 0o도 됩니다)
나누어떨어지지 않는 결과는 이 자릿수에서 끊습니다
음의 정수를 비트 패턴으로 보여 줍니다. 2·8·16진수로 입력한 값은 비트 패턴으로 읽습니다
나의 도구함입력한 값은 이 브라우저에만 저장됩니다.

결과

변환 결과
FF
2진수
1111 1111
8진수
377
10진수
255
16진수
FF
풀이 과정
  • 정수 부분: 16(으)로 계속 나누고 나머지를 차례로 적습니다:
  • 255 ÷ 16 = 15 … 나머지 15 (F)
  • 15 ÷ 16 = 0 … 나머지 15 (F)
  • 나머지를 아래에서 위로 읽습니다: FF₁₆

계산 방법

진법의 원리: 자릿값

b진법에서 각 자리의 값은 숫자 × b자리입니다. 10진수 255는 2 × 10² + 5 × 10¹ + 5 × 10⁰이라는 뜻입니다. 2진수는 0과 1만, 8진수는 0~7, 16진수는 0~9와 A~F(A = 10 … F = 15)를 씁니다. 10보다 큰 밑에서는 알파벳을 빌려 쓰며 36진수는 Z = 35까지 갑니다. 정보 수업이나 프로그래밍 공부에서 진법을 처음 배울 때 아래 표를 외워 두면 편합니다.

10진수2진수8진수16진수
10101012A
15111117F
100110 010014464
2551111 1111377FF

n진수를 10진수로: 자릿값 더하기

각 자리에 밑의 거듭제곱을 곱해 모두 더합니다: FF₁₆ = 15 × 16¹ + 15 × 16⁰ = 240 + 15 = 255. 소수점 아래 자리는 음의 거듭제곱이 되어 0.1₂ = 1 × 2⁻¹ = 0.5입니다.

10진수를 n진수로: 나눗셈 반복

몫이 0이 될 때까지 바꿀 밑으로 계속 나누고 나머지를 적습니다. 나머지를 아래에서 위로 읽으면 답입니다. 13을 2진수로 바꾸는 방법은 다음과 같습니다.

아래에서 위로 읽으면 13 = 1101₂입니다. 같은 방법으로 200을 16진수로 바꾸면 200 ÷ 16 = 12 … 8, 12 ÷ 16 = 0 … 12(C)이므로 200 = C8₁₆입니다.

2진수와 16진수 변환: 네 자리씩 묶기

16 = 2⁴이므로 2진수를 오른쪽부터 네 자리씩 끊어 각각을 16진수 한 자리로 바꾸면 됩니다. 1100 1000₂ = C8₁₆, 1111 1111₂ = FF₁₆입니다. 8진수는 8 = 2³이므로 세 자리씩 끊습니다. 색상 코드 #FF8800처럼 16진수가 두 자리씩 쓰이는 것도 두 자리가 정확히 8비트(1바이트)이기 때문입니다.

소수 변환: 곱셈과 순환소수

소수 부분에 밑을 곱해 정수 부분을 다음 자리로 쓰고, 남은 소수 부분으로 같은 계산을 이어 갑니다. 0.1을 2진수로 바꾸면 0.1 × 2 = 0.2 → 0, 0.4 → 0, 0.8 → 0, 1.6 → 1, 1.2 → 1, 그리고 다시 0.4가 나옵니다. 결과는 0.1 = 0.0(0011)₂라는 순환소수이며, 컴퓨터가 0.1을 정확히 저장하지 못하는 이유입니다.

유한소수가 되는지는 기약분수의 분모만 보면 압니다. 분모의 모든 소인수가 밑을 나누면 유한한 자리에서 끝납니다. 1/2은 2진수에서 나누어떨어지지만(0.1₂), 1/10은 소인수 5가 2를 나누지 못해 끝나지 않습니다. 이 계산기는 부동소수점이 아니라 정수(BigInt)로 계산하므로 순환마디를 정확히 찾습니다.

음수와 2의 보수

종이에서는 음수 앞에 마이너스 기호만 붙이면 됩니다: −255 = −FF₁₆. 컴퓨터 안에서는 2의 보수로 나타냅니다. 절댓값을 2진수로 쓰고, 모든 비트를 뒤집고, 1을 더합니다. 8비트에서 −1은 0000 0001 → 1111 1110 → 1111 1111입니다. n비트로 나타낼 수 있는 범위는 −2ⁿ⁻¹ ~ 2ⁿ⁻¹ − 1이어서 8비트는 −128 ~ 127이고, 128은 오버플로가 됩니다.

로마 숫자로 바꾸려면 로마 숫자 변환기, 거듭제곱이나 로그 계산은 공학용 계산기를 쓰세요.

자주 묻는 질문

10진수를 2진수로 바꾸는 방법은?

몫이 0이 될 때까지 2로 계속 나누고 나머지를 적은 뒤, 나머지를 아래에서 위로 읽습니다: 13 → 6 … 1, 3 … 0, 1 … 1, 0 … 1 → 1101.

2진수를 10진수로 바꾸려면?

각 자리에 2의 거듭제곱(맨 오른쪽이 2⁰)을 곱해 더합니다: 1101₂ = 1 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 13.

2진수와 16진수는 어떻게 바꾸나요?

16 = 2⁴이므로 2진수를 오른쪽부터 네 자리씩 끊어 각각 16진수 한 자리로 바꿉니다: 1111 1111 = F F = FF. 거꾸로 16진수 한 자리를 2진수 네 자리로 풀면 2진수가 됩니다. 8진수는 세 자리씩 끊습니다.

16진수를 10진수로 바꾸려면?

각 자리에 16의 거듭제곱(맨 오른쪽이 16⁰)을 곱해 더합니다. A~F는 10~15입니다: 2F₁₆ = 2 × 16 + 15 = 47.

소수는 어떻게 진법 변환하나요?

소수 부분에 밑을 곱해 정수 부분을 한 자리씩 꺼냅니다. 0.1은 2진수로 0.000110011…₂처럼 끝없이 이어지는 순환소수가 되며, 여러 프로그래밍 언어에서 0.1 + 0.2가 정확히 0.3이 되지 않는 이유입니다.

2의 보수란 무엇인가요?

컴퓨터가 음의 정수를 나타내는 표준 방법입니다. 절댓값을 2진수로 쓰고 모든 비트를 뒤집은 뒤 1을 더합니다. 8비트의 −1은 1111 1111(FF)이고, 8비트로 나타낼 수 있는 범위는 −128 ~ 127입니다.

출처 및 근거

업데이트: · 편집 원칙

관련 도구