Что такое байт?
Байт это единица цифровых данных из 8 битов, которые вместе могут представить 256 разных значений, от 0 до 255. На большинстве компьютеров это наименьшая единица памяти с собственным адресом, и размеры файлов считают в байтах.
Обновлено 24 сентября 2026 г.
- 48H
- 69i
- 20␣
- F0 9F 98 80😀
Символов: 4, байтов: 7
Буква A на твоём компьютере хранится как число 65, а число 65 хранится как восемь битов: 01000001. Эта группа из восьми и есть байт. Адреса памяти считают байты, размеры файлов считают байты, и почти любой тип данных в языке программирования занимает целое число байтов.
Почему в байте 8 битов
Слово «byte» придумал Вернер Бухгольц в 1956 году, когда работал над компьютером IBM Stretch. Он написал его через y, чтобы его не приняли за «bit». Ранние компьютеры использовали группы разного размера, часто по 6 битов, чего хватало на заглавные буквы и цифры, но не на строчные.
IBM System/360, выпущенная в 1964 году, использовала 8-битные байты, и остальная отрасль последовала за ней. Восемь битов дают 256 значений, а это место для заглавных и строчных букв, цифр, знаков препинания и управляющих кодов. Восемь к тому же степень двойки, поэтому байт делится ровно на две половины по 4 бита, и каждая записывается одной шестнадцатеричной цифрой. Сетевые стандарты до сих пор говорят «октет», когда нужно точно указать, что имеются в виду ровно 8 битов.
Что вмещает один байт
У байта 256 возможных комбинаций, от 00000000 до 11111111. Программы читают их несколькими стандартными способами:
- как беззнаковое число от 0 до 255;
- как знаковое число от -128 до 127;
- как один символ, например
A(65) или!(33); - как две шестнадцатеричные цифры, от
00доFF.
Тип bytes в Python это последовательность таких значений, и он отвергает всё, что выходит за пределы от 0 до 255:
b'Hi!'
[72, 105, 33]
01001000 48
ValueError: bytes must be in range(0, 256)
Не каждый символ помещается в один байт. UTF-8, кодировка большей части интернета, хранит 128 символов ASCII по 1 байту, а всё остальное от 2 до 4 байтов:
A 1 bytes: [65] 41
é 2 bytes: [195, 169] c3a9
€ 3 bytes: [226, 130, 172] e282ac
😀 4 bytes: [240, 159, 152, 128] f09f9880
Поэтому длина строки в символах и её размер в байтах могут различаться.
Бит и байт: в чём разница
Бит это один 0 или 1. Байт это 8 битов. Две единицы легко перепутать, потому что их обозначения различаются только регистром:
| Бит | Байт | |
|---|---|---|
| Что это | Одна двоичная цифра | 8 битов |
| Возможные значения | 2 (0 или 1) | 256 (от 0 до 255) |
| Обозначение | b (строчная), по-русски бит | B (заглавная), по-русски Б |
| Чем обычно измеряют | Скорость сети: Мбит/с, Гбит/с | Объём памяти и размер файлов: КБ, МБ, ГБ |
| Пример | Подключение на 100 Мбит/с | Фотография на 5 МБ |
Чтобы перевести биты в байты, раздели на 8. Подключение на 100 Мбит/с передаёт не больше 12,5 МБ в секунду, поэтому фотография на 5 МБ скачивается через него как минимум 0,4 секунды.
Килобайты, мегабайты и гигабайты
Более крупные единицы существуют в двух системах, и разница между ними объясняет, почему новый диск в Windows выглядит меньше, чем на этикетке.
| Десятичные (СИ) | Байтов | Двоичные (МЭК) | Байтов |
|---|---|---|---|
| килобайт (кБ) | 1 000 | кибибайт (КиБ) | 1 024 |
| мегабайт (МБ) | 1 000 000 | мебибайт (МиБ) | 1 048 576 |
| гигабайт (ГБ) | 1 000 000 000 | гибибайт (ГиБ) | 1 073 741 824 |
| терабайт (ТБ) | 1 000 000 000 000 | тебибайт (ТиБ) | 1 099 511 627 776 |
Производители дисков, скорости сети и macOS (начиная с версии 10.6 в 2009 году) используют десятичные единицы. Объём оперативной памяти и Windows используют двоичные единицы, но Windows подписывает их как КБ, МБ и ГБ. МЭК ввела названия кибибайт, мебибайт и гибибайт в 1998 году, чтобы покончить с путаницей, хотя многие программы до сих пор ими не пользуются.
1.0 TB (decimal, used on the box)
931.3 GiB (binary, what Windows calls GB)
12.5 MB per second
Никакое место не пропало. Диск вмещает триллион байтов, обещанный на коробке; просто Windows трижды делит на 1 024, а не на 1 000.
Байты в коде
Каждое значение в памяти занимает целое число байтов. В C это число сообщает sizeof. char по определению занимает ровно 1 байт, а на современных 64-битных системах Linux, macOS и Windows short занимает 2 байта, int 4, а double 8. Поэтому массив из 1 000 значений int занимает 4 000 байтов.
printf("%zu\n", sizeof(int)); /* prints 4 */
Тип byte в Java всегда знаковый, от -128 до 127, поэтому значение вроде 200 в него не помещается:
byte b = (byte) 200; // b is -56: the same 8 bits, read as signed
Сырые данные, например изображения, сжатые файлы и сетевые пакеты, обрабатывают как массив байтов: bytes и bytearray в Python, byte[] в Java, Uint8Array в JavaScript. Если открыть файл в Python в режиме "rb", получишь его байты, а не текст.
Хеши и контрольные суммы тоже измеряют в байтах. Дайджест SHA-256 занимает 32 байта, поэтому он выводится как 64 шестнадцатеричных символа, а контрольная сумма CRC32 занимает 4 байта. Генератор хешей показывает и то и другое для любого текста.
Что читать дальше
Про единицу, из которой состоит байт, прочитай на странице что такое бит, а про то, как байты помогают обнаружить повреждённые файлы, на странице что такое контрольная сумма. Конвертер систем счисления переводит любой байт между десятичной, двоичной и шестнадцатеричной записью, а руководство по типам данных C перечисляет размер каждого типа C в байтах.
Часто задаваемые вопросы
Как называются 8 битов 11111111?
11111111 это байт, в котором все биты равны 1. Если читать его как беззнаковое число, это 255, наибольшее значение, которое вмещает байт, в шестнадцатеричной записи FF. Если читать его как знаковый байт в дополнительном коде, те же биты означают -1.Почему 8 битов равны 1 байту?
Почему 4 бита называют ниблом (полубайтом)?
1 байт это 4 бита?
Что больше, байт или гигабайт?
Как выглядит один байт?
01000001. Эта комбинация означает число 65, а это ещё и код буквы A в ASCII. Программисты обычно записывают байт двумя шестнадцатеричными цифрами, поэтому 01000001 превращается в 41.