Прескочи към съдържанието

Калкулатор за дължина на битове и байтове - Безплатен инструмент за размер на данни

Изчислете дължина на битове и байтове за цели числа, шестнадесетични низове и текст с UTF-8, UTF-16, ASCII кодирания. Безплатен онлайн инструмент за разработчици, специалисти по данни и мрежови инженери.

Калкулатор за дължина на битове и байтове

Тип вход
битове
8
байтове
1

8 битове = 1 байтове

Визуализация

Байт 1
11111111
0xFF
Калкулатор за зареждане...
📚

Документация

Какво представлява калкулаторът за дължина в битове и байтове?

Калкулаторът за дължина в битове и байтове определя колко бита и байта са необходими за дадена част от данни. Битът е една двоична цифра — 0 или 1. Байтът е група от 8 бита. Калкулаторът приема цяло число, шестнадесетичен низ или текстов низ и отчита точния размер и в двете единици.

Това е важно при програмирането, мрежите и съхранението на данни. Колона в база данни, мрежов пакет и файл на диска имат размер, измерван в байтове, като този размер зависи от начина, по който са записани данните.

Как се изчислява дължината в битове на цяло число

Дължината в битове на положително цяло число е броят на цифрите в двоичната му форма. Например 255 в двоична бройна система е 11111111, което има 8 цифри, така че дължината му в битове е 8.

Формула: за положително цяло число n дължината в битове е броят на цифрите в представянето на n в бройна система с основа 2. В специалния случай n = 0 дължината в битове е 1.

За отрицателни цели числа се използва допълнителен код — стандартният начин, по който компютрите съхраняват числа със знак. Дължината в битове на отрицателно цяло число е най-малкият брой битове, в който то може да бъде представено чрез допълнителен код. Например −128 се побира в 8 бита (като 10000000), но за −129 са необходими 9 бита, защото с 8 бита може да се достигне най-много до −128.

След като дължината в битове е известна, дължината в байтове се намира чрез закръгляване нагоре до най-близкия цял байт:

Дължина в байтове = ⌈дължина в битове ÷ 8⌉

Символът ⌈ ⌉ означава „закръгляване нагоре“. Стойност с 9 бита все още изисква 2 пълни байта, защото байтът не може да бъде разделен.

Пример с решение

Цяло числоДължина в битовеДължина в байтове
011
25581
25692
−12881
−12992
18,446,744,073,709,551,615 (2⁶⁴ − 1)648

Как се изчислява дължината в битове на шестнадесетичен низ

Всяка шестнадесетична цифра (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 знака.

Източници

  1. "Character encoding." Wikipedia, фондация Wikimedia. https://en.wikipedia.org/wiki/Character_encoding
  2. "UTF-8, UTF-16, UTF-32 & BOM." Unicode, Inc. https://www.unicode.org/faq/utf_bom.html
  3. "Two's complement." Wikipedia, фондация Wikimedia. https://en.wikipedia.org/wiki/Two%27s_complement