비트
계산 과정 보기
2진수의 각 자리는 2의 거듭제곱을 나타내므로 11111010000 = 1024 + 512 + 256 + 128 + 64 + 16 = 2000입니다. 길이에 상관없이 공백이나 0b 접두사가 있어도 붙여 넣으면 10진수 값과 자릿값이 나옵니다.
사용법
- 2진수, 8진수, 10진수, 16진수 또는 2~36 사이 원하는 진법 칸 중 아무 곳에나 입력하면 나머지 칸이 입력하는 대로 바뀝니다.
- 칸 옆의 복사 버튼을 누르면 그 값이 복사됩니다. 0x, 0b, 0o 같은 접두사와 공백, 밑줄도 입력할 수 있습니다.
- 비트에서 8, 16, 32, 64비트를 고르면 2의 보수 형태와 부호 있는 값, 부호 없는 값이 보입니다. 비트를 누르면 뒤집힙니다.
- 계산 과정 보기를 열면 풀이가 나오고, 텍스트로 바꾸면 글자를 2진수나 16진수 코드로, 또 그 반대로 변환할 수 있습니다.
- 크기에 상관없이 정확하게 계산합니다. 2⁵³ 제한이 없어서 100자리 숫자도 변환됩니다.
- 소수도 지원합니다(점으로 입력). 10진수 0.1은 2진수로 0.0001100110011…입니다. 길거나 무한히 반복되는 소수는 64자리에서 자릅니다.
- 음수는 칸에서는 마이너스 기호로, 비트 보기에서는 2의 보수로 표시됩니다.
- 텍스트 모드는 UTF-8을 씁니다. 한글은 글자당 3바이트, 악센트 문자나 이모지는 2~4바이트가 됩니다.
진법의 원리
b진법에서는 각 자리 숫자에 b의 거듭제곱을 곱합니다. 10진수 2024는 2×10³ + 0×10² + 2×10¹ + 4×10⁰이고, 2진수 1011은 1×8 + 0×4 + 1×2 + 1×1 = 11입니다. 10보다 큰 진법은 알파벳을 써서 16진수는 0~9와 A~F(A = 10, F = 15)로 나타냅니다.
10진수를 b진수로 바꾸려면 b로 계속 나누고 나머지를 아래에서 위로 읽습니다. 반대로 바꿀 때는 각 자리 숫자에 자릿값을 곱해 더합니다.
16진수와 8진수를 쓰는 이유
16진수 한 자리는 정확히 4비트, 8진수 한 자리는 3비트라서 긴 2진수를 계산 없이 짧게 쓸 수 있습니다. 1101 1110 1010 1101은 16진수로 DEAD입니다. 16진수는 색상 코드(#FF8800), 메모리 주소, 바이트 덤프에서, 8진수는 755 같은 유닉스 파일 권한에서 자주 보입니다.
2의 보수와 범위
컴퓨터는 음의 정수를 2의 보수로 저장합니다. 양수 값의 비트를 모두 뒤집고 1을 더하므로 8비트 −42는 11010110(0xD6)입니다. 부호 있는 8비트 값은 −128~127, 16비트는 −32,768~32,767 범위입니다. 이 변환기는 임의 정밀도 정수로 계산해 일반 자바스크립트 숫자의 2⁵³ 제한이 없습니다.
자주 묻는 질문
2진수를 10진수로 바꾸는 방법은?
각 비트에 2의 거듭제곱을 곱해 더합니다. 101101 = 32 + 8 + 4 + 1 = 45입니다. 계산 과정에서 이 자릿값을 보여 줍니다.
10진수를 2진수로 바꾸는 방법은?
2로 계속 나누며 나머지를 적고 아래에서 위로 읽습니다. 13 → 6 나머지 1 → 3 나머지 0 → 1 나머지 1 → 0 나머지 1이므로 13 = 1101입니다.
16진수 FF는 10진수로 얼마인가요?
15 × 16 + 15 = 255로, 1바이트로 나타낼 수 있는 가장 큰 값입니다.
숫자 앞의 0x는 무슨 뜻인가요?
C, 자바스크립트, 파이썬 등 많은 언어에서 16진수 리터럴을 뜻하며 0x1F는 31입니다. 마찬가지로 0b는 2진수, 0o는 8진수이고 변환기는 세 가지 접두사를 모두 받습니다.
음수는 2진수로 어떻게 쓰나요?
보통 2의 보수를 씁니다. 정한 비트 수로 양수 값을 쓰고 모든 비트를 뒤집은 뒤 1을 더합니다. 8비트에서 −1은 11111111, −128은 10000000입니다.
소수도 변환되나요?
됩니다. 0.5는 2진수로 0.1, 0.625는 0.101이지만 0.1은 2진수로 끝나지 않으므로(0.000110011…) 길거나 반복되는 소수는 64자리에서 자릅니다.