Калкулатор за дължина на битове и байтове - Безплатен инструмент за размер на данни
Изчислете дължина на битове и байтове за цели числа, шестнадесетични низове и текст с UTF-8, UTF-16, ASCII кодирания. Безплатен онлайн инструмент за разработчици, специалисти по данни и мрежови инженери.
Калкулатор за дължина на битове и байтове
8 битове = 1 байтове
Визуализация
Документация
Какво представлява калкулаторът за дължина в битове и байтове?
Калкулаторът за дължина в битове и байтове определя колко бита и байта са необходими за дадена част от данни. Битът е една двоична цифра — 0 или 1. Байтът е група от 8 бита. Калкулаторът приема цяло число, шестнадесетичен низ или текстов низ и отчита точния размер и в двете единици.
Това е важно при програмирането, мрежите и съхранението на данни. Колона в база данни, мрежов пакет и файл на диска имат размер, измерван в байтове, като този размер зависи от начина, по който са записани данните.
Как се изчислява дължината в битове на цяло число
Дължината в битове на положително цяло число е броят на цифрите в двоичната му форма. Например 255 в двоична бройна система е 11111111, което има 8 цифри, така че дължината му в битове е 8.
Формула: за положително цяло число n дължината в битове е броят на цифрите в представянето на n в бройна система с основа 2. В специалния случай n = 0 дължината в битове е 1.
За отрицателни цели числа се използва допълнителен код — стандартният начин, по който компютрите съхраняват числа със знак. Дължината в битове на отрицателно цяло число е най-малкият брой битове, в който то може да бъде представено чрез допълнителен код. Например −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 |
Как се изчислява дължината в битове на шестнадесетичен низ
Всяка шестнадесетична цифра (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: 7-битово кодиране, обхващащо 128 знака, предимно английски букви, цифри и основни препинателни знаци. Всеки знак заема 1 байт. Всеки знак извън този набор се отхвърля.
- Latin-1 (ISO-8859-1): 8-битово кодиране, обхващащо 256 знака и включващо ударени букви, използвани в западноевропейските езици. Всеки знак заема 1 байт. Знаците извън този набор се отхвърлят.
Формула: дължина в байтове = броят байтове, които кодирането произвежда за низа. Дължина в битове = дължина в байтове × 8.
Броят обхваща само самия текст. Не се добавя маркер за реда на байтовете, затова броят при UTF-16 или UTF-32 тук е съответно с 2 или 4 байта по-малък от броя при инструмент, който записва маркер в началото.
Пример с решение
Текстът „Hello, world!“ има 13 знака, всички от които са обикновени ASCII букви и препинателни знаци.
- UTF-8: 13 байта (104 бита), тъй като всеки знак се побира в 1 байт.
- UTF-16: 26 байта (208 бита), тъй като всеки знак заема 2 байта.
Текстът „こんにちは世界“ (седем японски знака) заема по 3 байта на знак в UTF-8, което дава 21 байта (168 бита).
Емоджи като 😀 е извън Основната многоезична равнина. То заема 4 байта в UTF-8, 4 байта в UTF-16 (като сурогатна двойка) и 4 байта в UTF-32.
Защо целите числа със знак променят резултата
Компютрите съхраняват отрицателните числа чрез допълнителен код, а не с обикновен знак минус. Това означава, че дължината в битове на отрицателно цяло число не е просто дължината в битове на абсолютната му стойност плюс едно. Правилото е: дължината в битове е най-малкият брой битове k, за който стойността е поне −2^(k−1). Затова −128 (което е равно на −2⁷) се побира в 8 бита, докато за −129 са необходими 9.
Често задавани въпроси
Как се преобразуват байтове в битове? Умножете по 8. Десет байта са равни на 80 бита, защото всеки байт по определение съдържа 8 бита.
Каква е разликата между дължина в битове и дължина в байтове? Дължината в битове брои отделните двоични цифри. Дължината в байтове брои групи от 8 бита, закръглени нагоре до следващия цял байт, когато дължината в битове не е кратна на 8.
Колко байта използва един знак в UTF-8? Между 1 и 4. Знаците, споделени с ASCII, използват 1 байт. Много ударени латински, гръцки и кирилски знаци използват 2 байта. Повечето китайски, японски и корейски знаци използват 3 байта. Емоджитата и други редки символи използват 4 байта.
Как се изчислява дължината в байтове на шестнадесетичен низ? Пребройте шестнадесетичните цифри след премахване на празните знаци, умножете по 4, за да получите битовете, и след това закръглете нагоре до цели байтове. Всеки байт е 2 шестнадесетични цифри, така че „FF“ е 1 байт, а „ABCD“ е 2 байта. Единична цифра като „F“ е 4 бита, но все пак заема 1 байт.
Защо на отрицателно цяло число понякога са необходими повече битове от съответното положително число? Допълнителният код използва един бит за обозначаване на знака, но този бит е част от обхвата на стойностите, а не се добавя към него във всеки случай. −128 се побира в същите 8 бита като положителните стойности до 127, но −129 вече не се побира в 8 бита и изисква 9.
Какви размери на входа приема този калкулатор? Цели числа, шестнадесетични низове и текстови низове с дължина до 1 000 000 знака.
Източници
- "Character encoding." Wikipedia, фондация Wikimedia. 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." Wikipedia, фондация Wikimedia. https://en.wikipedia.org/wiki/Two%27s_complement