비트 및 바이트 길이 계산기 - 무료 데이터 크기 도구
비트 및 바이트 길이 계산기는 정수, 16진수 문자열, 일반 텍스트를 입력하면 그 값의 비트와 바이트 길이를 계산한다. UTF-8, UTF-16, UTF-32, ASCII, Latin-1 등 인코딩 방식별 공식을 적용해 개발자의 데이터 크기 산정에 쓰인다.
비트 및 바이트 길이 계산기
8 비트 = 1 바이트
시각화
문서화
비트 및 바이트 길이 계산기란?
비트 및 바이트 길이 계산기는 데이터에 필요한 비트와 바이트의 수를 계산합니다. 비트는 0 또는 1인 하나의 이진 숫자입니다. 바이트는 8비트의 묶음입니다. 이 계산기는 정수, 십육진수 문자열 또는 텍스트 문자열을 입력받아 두 단위로 정확한 크기를 표시합니다.
이는 프로그래밍, 네트워킹 및 데이터 저장에서 중요합니다. 데이터베이스 열, 네트워크 패킷, 디스크의 파일은 모두 바이트로 측정되는 크기를 가지며, 그 크기는 데이터가 기록되는 방식에 따라 달라집니다.
정수의 비트 길이를 계산하는 방법
양의 정수의 비트 길이는 이진 형식에서 숫자의 개수입니다. 예를 들어 255의 이진 표현은 11111111이며, 숫자가 8개이므로 비트 길이는 8입니다.
공식: 양의 정수 n의 비트 길이는 n을 밑-2 진법으로 나타냈을 때 숫자의 개수입니다. 특수한 경우인 n = 0의 비트 길이는 1입니다.
음의 정수에는 컴퓨터가 부호 있는 수를 저장하는 표준 방식인 2의 보수를 사용합니다. 음의 정수의 비트 길이는 2의 보수 형식으로 해당 정수를 저장할 수 있는 최소 비트 수입니다. 예를 들어 −128은 8비트에 들어가며(10000000), −129는 9비트가 필요합니다. 8비트로는 최솟값이 −128이기 때문입니다.
비트 길이를 알면 바이트 길이는 가장 가까운 정수 바이트 단위로 올림하여 구합니다.
바이트 길이 = ⌈비트 길이 ÷ 8⌉
⌈ ⌉ 기호는 “올림”을 의미합니다. 9비트 값에도 2바이트 전체가 필요합니다. 바이트는 나눌 수 없기 때문입니다.
풀이 예시
| 정수 | 비트 길이 | 바이트 길이 |
|---|---|---|
| 0 | 1 | 1 |
| 255 | 8 | 1 |
| 256 | 9 | 2 |
| −128 | 8 | 1 |
| −129 | 9 | 2 |
| 18,446,744,073,709,551,615 (2⁶⁴ − 1) | 64 | 8 |
십육진수 문자열의 비트 길이를 계산하는 방법
각 16진수 숫자(0–9, A–F)는 정확히 4비트를 나타냅니다. 4비트로 16개의 가능한 값을 표현할 수 있기 때문입니다.
공식: 비트 길이 = 십육진수 숫자의 개수 × 4. 바이트 길이는 다시 비트 길이를 8로 나눈 뒤 올림하여 구합니다.
예를 들어 십육진수 문자열 “FF”에는 숫자가 2개 있으므로 비트 길이는 2 × 4 = 8비트, 즉 1바이트입니다. 십육진수 문자열 “ABCD”에는 숫자가 4개 있어 16비트, 즉 2바이트가 됩니다. 개수를 세기 전에 공백과 기타 여백 문자는 제거됩니다. 숫자 개수가 홀수여도 전체 바이트 단위로 올림합니다. “F”는 4비트이며 계산기는 이를 1바이트로 표시합니다.
텍스트 문자열의 바이트 길이를 계산하는 방법
텍스트의 크기는 문자를 바이트로 변환하는 규칙인 문자 인코딩에 따라 달라집니다. 이 계산기는 다섯 가지 인코딩을 지원합니다.
- UTF-8: 웹 전반에서 사용되는 가변 길이 인코딩입니다. 각 문자는 1~4바이트를 차지합니다. 일반적인 영어 문자, 숫자 및 문장 부호는 각각 1바이트를 차지합니다.
- UTF-16: JavaScript와 Windows에서 내부적으로 사용됩니다. 대부분의 문자는 2바이트를 차지하며, 많은 이모지처럼 기본 다국어 평면 밖의 문자는 4바이트를 차지합니다.
- UTF-32: 고정 길이 인코딩입니다. 어떤 문자든 종류에 관계없이 정확히 4바이트를 차지합니다.
- ASCII: 주로 영어 문자, 숫자 및 기본 문장 부호인 128개 문자를 포함하는 7비트 인코딩입니다. 각 문자는 1바이트를 차지합니다. 이 집합에 속하지 않는 문자는 거부됩니다.
- Latin-1 (ISO-8859-1): 서유럽 언어에서 사용되는 악센트 문자를 추가로 포함하는 8비트 인코딩으로, 256개 문자를 포함합니다. 각 문자는 1바이트를 차지합니다. 이 집합에 속하지 않는 문자는 거부됩니다.
공식: 바이트 길이 = 해당 문자열에 대해 인코딩이 생성하는 바이트 수. 비트 길이 = 바이트 길이 × 8.
이 수치는 텍스트 자체만을 대상으로 합니다. 바이트 순서 표시를 추가하지 않으므로, 여기서의 UTF-16 또는 UTF-32 수치는 시작 부분에 바이트 순서 표시를 기록하는 도구의 결과보다 각각 2 또는 4바이트 작습니다.
풀이 예시
“Hello, world!”라는 텍스트에는 일반 ASCII 문자와 문장 부호만으로 된 문자가 13개 있습니다.
- UTF-8: 13바이트(104비트)입니다. 모든 문자가 1바이트에 들어가기 때문입니다.
- UTF-16: 26바이트(208비트)입니다. 모든 문자가 2바이트를 차지하기 때문입니다.
“こんにちは世界”라는 텍스트(일본어 문자 7개)는 UTF-8에서 문자당 3바이트를 차지하므로 21바이트(168비트)가 됩니다.
😀와 같은 이모지는 기본 다국어 평면 밖에 있습니다. UTF-8에서는 4바이트, UTF-16에서는 4바이트(서로게이트 쌍으로), UTF-32에서는 4바이트를 차지합니다.
부호 있는 정수가 결과를 바꾸는 이유
컴퓨터는 음수를 단순한 빼기 기호가 아니라 2의 보수로 저장합니다. 따라서 음의 정수의 비트 길이는 그 절댓값의 비트 길이에 1을 더한 값과 단순히 같지 않습니다. 규칙은 값이 −2^(k−1) 이상이 되도록 하는 최소 비트 수 k가 비트 길이라는 것입니다. 따라서 −128(−2⁷과 같음)은 8비트에 들어가지만 −129은 9비트가 필요합니다.
자주 묻는 질문
바이트를 비트로 변환하려면 어떻게 하나요? 8을 곱합니다. 바이트 하나가 정의상 8비트를 저장하므로 10바이트는 80비트입니다.
비트 길이와 바이트 길이의 차이는 무엇인가요? 비트 길이는 개별 이진 숫자를 셉니다. 바이트 길이는 8비트씩 묶어 센 값이며, 비트 길이가 8의 배수가 아니면 다음 전체 바이트 단위로 올림합니다.
UTF-8 문자는 몇 바이트를 사용하나요? 1~4바이트입니다. ASCII와 공유되는 문자는 1바이트를 사용합니다. 많은 악센트 라틴 문자, 그리스 문자 및 키릴 문자는 2바이트를 사용합니다. 대부분의 중국어, 일본어 및 한국어 문자는 3바이트를 사용합니다. 이모지와 기타 희귀 기호는 4바이트를 사용합니다.
십육진수 문자열의 바이트 길이는 어떻게 계산하나요? 공백을 제거한 뒤 십육진수 숫자를 세고, 비트로 변환하기 위해 4를 곱한 다음 전체 바이트 단위로 올림합니다. 바이트 하나는 십육진수 숫자 2개이므로 “FF”는 1바이트이고 “ABCD”는 2바이트입니다. “F”와 같은 숫자 하나는 4비트이며, 그래도 1바이트를 차지합니다.
음의 정수는 왜 양의 대응 값보다 더 많은 비트가 필요한 경우가 있나요? 2의 보수는 부호를 표시하는 데 1비트를 사용하지만, 모든 경우에 값 위에 추가하는 것이 아니라 해당 비트를 값의 범위와 공유합니다. −128은 양의 값 127까지와 동일한 8비트에 들어가지만, −129은 더 이상 8비트에 들어가지 않아 9비트가 필요합니다.
이 계산기는 어떤 입력 크기를 허용하나요? 길이가 최대 1,000,000자인 정수, 십육진수 문자열 및 텍스트 문자열입니다.
참고 문헌
- "Character encoding." 위키백과, 위키미디어 재단. https://en.wikipedia.org/wiki/Character_encoding
- "UTF-8, UTF-16, UTF-32 & BOM." Unicode, Inc. https://www.unicode.org/faq/utf_bom.html
- "Two's complement." 위키백과, 위키미디어 재단. https://en.wikipedia.org/wiki/Two%27s_complement