진법 변환기

값 하나를 넣으면 2·8·10·16진법으로 함께 보여주고, 원하면 36진법까지 아무 진법으로나 바꿉니다. 계산은 BigInt 로 하므로 자릿수 제한이 없습니다 — 64비트 ID 를 parseInt 로 받으면 2^53 을 넘는 순간 조용히 틀린 값이 나오는데, 그 자리를 피하려고 만든 도구입니다.

자주 쓰는 진법

2진법부터 36진법까지. 10을 넘는 자리는 a~z 로 적습니다.

바꾼 값

2진법
1111 1111
8진법
377
10진법
255
16진법
ff
36진법
73

비트로 보면

2의 보수로 적었습니다. 음수는 폭이 정해져야 비트가 정해집니다.

8 bit
11111111

부호 있는 정수로 -1 · 부호 없는 정수로 255

16 bit
00000000 11111111

부호 있는 정수로 255 · 부호 없는 정수로 255

32 bit
00000000 00000000 00000000 11111111

부호 있는 정수로 255 · 부호 없는 정수로 255

64 bit
00000000 00000000 00000000 00000000 00000000 00000000 00000000 11111111

부호 있는 정수로 255 · 부호 없는 정수로 255

값은 BigInt 로 다루므로 자릿수에 제한이 없습니다. 자바스크립트의 Number 는 2^53 을 넘으면 값이 어긋나는데, 64비트 ID 를 다룰 때 그 자리에서 조용히 틀린 값이 나옵니다.

고르는 것은 넣은 값의 진법뿐입니다

2·8·10·16 은 단추로, 그 밖은 숫자칸에 2부터 36까지 적습니다. 결과는 늘 2·8·10·16진법으로 나오고, 「그 밖의 진법」이 그 넷에 없으면 한 줄 더 붙습니다. 10을 넘는 자리는 a~z 로 적고 대소문자를 가리지 않으며 결과는 소문자로 냅니다.

읽지 못했다고 하는 자리

그 진법에 없는 자리가 하나라도 섞이면 값 전체를 읽지 못했다고 합니다 — 8진법의 9, 16진법의 g 가 그렇습니다. 0x·0b·0o 앞가지는 그 진법을 골랐을 때만 떼므로, 16진법에서 0b10 은 2진수가 아니라 16진수 b10(2832)입니다. 밑줄·공백·쉼표는 어디 있든 자리 구분으로 보고 지웁니다.

비트 표가 말하는 것

8·16·32·64비트마다 2의 보수 비트를 여덟 자리씩 끊어 보여주고, 같은 비트를 부호 있게·없게 읽은 값을 나란히 적습니다. 255 는 8비트에서 11111111 이고 부호 있게 읽으면 −1, 없이 읽으면 255 입니다. 담기는 범위는 −2^(폭−1) 부터 2^폭−1 까지이고, 그 밖이면 잘라 보여주지 않고 담기지 않는다고만 적습니다.

브라우저 안에서 끝납니다

적는 대로 그 자리에서 다시 셉니다. 넣은 값은 서버로 가지 않고 저장하지도 않으므로 내부 ID 를 그대로 넣어도 됩니다.

자주 묻는 질문

음수는 어떻게 나오나요?

값 자체는 부호를 붙여 보여주고, 2의 보수는 아래 비트 표에서 8·16·32·64비트로 나눠 보여줍니다. 2의 보수는 비트 폭이 정해져야 정해지는 값이라, 폭 없이 「−5의 2진수」를 내놓으면 그것은 답이 아니라 짐작입니다.

0x나 0b를 붙여 넣어도 되나요?

됩니다. 다만 그 진법으로 읽을 때만 앞가지로 인정합니다 — 10진법에서 0x10 은 앞가지가 아니라 읽을 수 없는 값입니다. 자리 구분에 쓴 밑줄·공백·쉼표는 어느 진법에서나 무시합니다.

얼마나 큰 수까지 되나요?

제한이 없습니다. 처음부터 끝까지 BigInt 로 다루므로 자릿수가 수백 자리여도 정확합니다. 다만 비트 표는 64비트까지만 보여줍니다 — 담기지 않는 값은 잘라서 보여주지 않고 담기지 않는다고 적습니다. 잘린 값은 틀린 값과 구별이 안 되기 때문입니다.

8비트 줄의 부호 있는 값이 왜 음수인가요?

맨 앞 비트가 1 이면 2의 보수에서는 음수입니다. 200 은 8비트에 담기지만 부호 있게 읽으면 −56 입니다. 틀린 것이 아니라 코드에서 int8 로 받으면 그 값이 나온다는 뜻입니다.

결과의 공백은 값의 일부인가요?

아닙니다. 2진법은 넷씩, 16진법은 둘씩, 비트 표는 여덟씩 읽기 좋으라고 띄운 것입니다. 코드에 쓸 때는 지우고, 이 도구에 다시 넣을 때는 그대로 붙여도 읽습니다.