Калькулятор длины битов и байтов - бесплатный инструмент для работы с размером данных
Вычисляйте длину битов и байтов для целых чисел, hex-строк и текста с кодировками 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 бит).
Такой эмодзи, как 😀, находится за пределами базовой многоязычной плоскости. В UTF-8 он занимает 4 байта, в UTF-16 (в виде суррогатной пары) — 4 байта, а в UTF-32 — 4 байта.
Почему знаковые целые числа меняют результат
Компьютеры хранят отрицательные числа в дополнительном коде, а не с помощью обычного знака минус. Поэтому длина отрицательного целого числа в битах не равна просто длине его модуля плюс один. Правило таково: длина в битах — это наименьшее число битов 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, Фонд Викимедиа. 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, Фонд Викимедиа. https://en.wikipedia.org/wiki/Two%27s_complement