🔢 진법 변환기
아무 칸에나 숫자를 넣으면 나머지 진법이 바로 바뀌어요. 비트 폭을 고르면 음수를 2의 보수로 보여 주고, 아래 비트 칸을 눌러 한 비트씩 켜고 끌 수 있어요.
사용법
- 2진수·8진수·10진수·16진수·N진수 중 아무 칸에나 숫자를 입력하세요. 나머지 칸이 입력하는 즉시 바뀌어요.
0b1010,0o17,0xFF처럼 접두사를 붙여도 되고,1111 0000·1_000_000·1,000,000처럼 띄어 쓰거나 묶어 써도 알아서 무시해요. 16진수는 대·소문자 모두 돼요.- 음수를 비트로 보고 싶으면 비트 폭(8·16·32·64비트)을 고르세요.
-1이 32비트에서FFFF FFFF로 보여요. - 아래 비트 그리드에서 칸을 누르면 그 비트가 0↔1로 바뀌고 모든 진법이 함께 바뀌어요. 플래그·권한 비트(예: 리눅스 파일 권한 755)를 맞춰 볼 때 편해요.
- 각 줄의 copy는 묶음 공백·쉼표를 뺀 값을 복사해요. 코드에 바로 붙일 거면 "0b·0o·0x 붙이기"를 켜세요.
진법 변환 원리
N진수 → 10진수는 각 자리 숫자에 N의 거듭제곱을 곱해 더해요. 16진수 2F = 2×16 + 15 = 47. 2진수 101101 = 32 + 8 + 4 + 1 = 45.
10진수 → N진수는 N으로 계속 나누고 나머지를 거꾸로 읽어요. 45 ÷ 2 → 나머지 1, 0, 1, 1, 0, 1 → 거꾸로 101101.
2진수 ↔ 16진수·8진수는 더 쉬워요. 16 = 2⁴라서 2진수 4자리가 16진수 1자리, 8 = 2³이라서 3자리가 8진수 1자리예요. 1011 0110 → B6. 이 도구가 2진수와 16진수를 4자리씩 묶어 보여 주는 이유예요.
| 10진수 | 2진수 | 8진수 | 16진수 |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 1 0000 | 20 | 10 |
| 100 | 0110 0100 | 144 | 64 |
| 255 | 1111 1111 | 377 | FF |
| 1024 | 0100 0000 0000 | 2000 | 400 |
| 65535 | 1111 1111 1111 1111 | 177777 | FFFF |
음수와 2의 보수
컴퓨터는 음수를 대부분 2의 보수로 저장해요. n비트에서 음수 −x는 2ⁿ − x의 비트 패턴이 돼요. 그래서 8비트에서 −1은 256 − 1 = 255 = 1111 1111, −128은 1000 0000이에요. 맨 왼쪽 비트(MSB)가 1이면 음수예요.
| 비트 폭 | 부호 있는 범위 (signed) | 부호 없는 범위 (unsigned) | 대표 자료형 |
|---|---|---|---|
| 8비트 | −128 ~ 127 | 0 ~ 255 | int8 / byte, uint8 |
| 16비트 | −32,768 ~ 32,767 | 0 ~ 65,535 | short, uint16 |
| 32비트 | −2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | int, uint32 |
| 64비트 | 약 −9.22×10¹⁸ ~ 9.22×10¹⁸ | 0 ~ 18,446,744,073,709,551,615 | long, uint64 |
비트 폭을 고른 상태에서 2·8·16진수 칸에 입력한 값은 비트 패턴으로 읽어요. 예를 들어 8비트·부호 있음에서 16진수 80을 넣으면 10진수는 −128, "부호 있는 정수"를 끄면 128이에요. 같은 비트를 어떻게 해석하느냐의 차이라서, 옵션을 바꾸면 비트는 그대로 두고 10진수 값만 바뀌어요. 범위를 넘는 값은 경고를 띄우고 아래쪽 n비트만 보여 줘요(실제 오버플로와 같은 결과).
지원 범위
- 정수만 지원해요. 자바스크립트 BigInt로 계산해서 2⁵³을 넘는 큰 수(64비트 최댓값, 수백 자리 수)도 반올림 없이 정확해요. 비트 그리드는 256비트까지 그려요.
- 소수점(실수)은 지원하지 않아요. 0.1 같은 10진 소수는 2진수로 끝나지 않는 무한소수가 되는 경우가 많아요. 직접 바꾸려면 소수 부분에 2를 계속 곱해 정수 부분(0 또는 1)을 차례로 적으면 돼요(0.625 → 1.25 → 0.5 → 1.0 →
0.101). 컴퓨터의 float·double 저장 방식(IEEE 754)은 이 도구 범위 밖이에요. - N진수는 2~36진수까지, 10 이상 자리는 a~z(대소문자 무관)로 써요. 36진수는 짧은 ID·단축 URL에 자주 쓰여요.
모든 계산은 브라우저 안에서만 이뤄지고 입력값은 서버로 전송되지 않아요. 자바스크립트 Number(부동소수점)로 2⁵³ 이상의 수를 다루면 끝자리가 틀어지지만(예: 9007199254740993 → …992), 이 도구는 BigInt를 써서 그대로 유지해요.