Почему в килобайте бывает 1000 или 1024 байта
По международным правилам 1 кБ равен 1000 байтам, а 1024 байта называются 1 КиБ. Путаница сохранилась из старой компьютерной практики.

По международным правилам 1 кБ равен 1000 байтам, а 1024 байта называются 1 КиБ. Путаница сохранилась из старой компьютерной практики.

Дальше вы узнаете, почему число 1024 оказалось рядом с приставкой «кило», как стандарт разделил кБ и КиБ, откуда берутся «пропавшие» гигабайты и какой коэффициент выбирать для расчёта.
В статье вы узнаете:
Компьютер хранит и обрабатывает данные через состояния, которые удобно описывать нулями и единицами. Поэтому объёмы памяти естественно росли степенями двойки: 2, 4, 8, 16 и дальше. После 512 следующая степень равна 1024, или 210.
Число 1024 оказалось подозрительно близко к тысяче: разница составляет всего 24 байта, или 2,4%. Ранним программистам и инженерам было удобно называть группу из 1024 элементов «килобайтом», хотя метрическая приставка «кило» уже означала умножение на 1000. На небольших объёмах сокращение почти не мешало. На больших оно превратилось в заметную разницу.
Здесь B обозначает байт. Современный байт содержит 8 бит, поэтому 1 КиБ равен 8192 битам. Бит обозначают строчной буквой b, байт прописной B. Разница в регистре маленькая, а в количестве данных восьмикратная.
Так возникло не новое свойство приставки «кило», а профессиональная привычка. Она закрепилась в документации, программах и речи раньше, чем у двоичных кратных появились отдельные названия. Поэтому выражение «килобайт равен 1024 байтам» долго выглядело нормой, хотя смешивало две системы.
У двоичного выбора есть техническая причина, но нет магического свойства. Накопитель, файл или сетевое сообщение можно измерить и десятичными, и двоичными блоками. Важно не основание само по себе, а честное название единицы.
В Международной системе единиц приставка «кило» означает строго 103, то есть 1000. Актуальная Брошюра SI отдельно предупреждает, что десятичные приставки не следует использовать для степеней двойки. Поэтому 1 kB равен 1000 B, как 1 километр равен 1000 метрам. [BIPM, Брошюра SI]
Для 1024 байт Международная электротехническая комиссия ввела двоичную приставку киби, сокращение от kilobinary. Её символ Ki, поэтому 1024 байта записываются как KiB, по-русски КиБ. Следующие ступени называются mebi, gibi и tebi: MiB, GiB и TiB.
IEC утвердила эти названия в декабре 1998 года, а поправка к стандарту IEC 60027-2 вышла в январе 1999 года. NIST объясняет причину прямо: привычные приставки SI обозначают точные степени десяти, а для обработки и передачи данных понадобились отдельные названия точных степеней двойки. [NIST, двоичные приставки]
Килобайт и кибибайт являются разными единицами. 1 кБ = 1000 байт, 1 КиБ = 1024 байта. По тому же правилу 1 МБ = 1 000 000 байт, а 1 МиБ = 1 048 576 байт.
На практике старое обозначение не исчезло. Программа может написать KB или КБ, но разделить число байтов на 1024. Другая программа использует ту же подпись и делит на 1000. Получаются разные числа для одного файла, хотя сам файл не изменился ни на бит.
Поэтому запись без контекста иногда остаётся двусмысленной. Строгий вариант решает проблему обозначениями kB и KiB. Если интерфейс использует только привычные КБ, МБ и ГБ, ищите описание коэффициента или сравните результат с точным числом байтов.
На первой ступени разница между 1000 и 1024 равна 2,4%. Дальше коэффициент применяется снова. Мегабайт строится как 1000 × 1000 байт, а мебибайт как 1024 × 1024 байта. На уровне гигабайта множитель используется трижды, на уровне терабайта четырежды.
| Уровень | Десятичная единица | Двоичная единица | Разница |
|---|---|---|---|
| Кило | 1 кБ = 1000 | 1 КиБ = 1024 | 2,4% |
| Мега | 1 МБ = 1 000 000 | 1 МиБ = 1 048 576 | 4,86% |
| Гига | 1 ГБ = 1 000 000 000 | 1 ГиБ = 1 073 741 824 | 7,37% |
| Тера | 1 ТБ = 1 000 000 000 000 | 1 ТиБ = 1 099 511 627 776 | 9,95% |
Проценты в последнем столбце сравнивают двоичную единицу с десятичной того же уровня. Один КиБ больше одного кБ на 2,4%, а один ТиБ больше одного ТБ уже почти на 10%. Именно повторное возведение коэффициента в степень превращает маленькие 24 байта в десятки гигабайтов разницы.
Сравнивать нужно именно одинаковые уровни. Один МиБ больше одного МБ. Но при переходе от МиБ к ГиБ число делят на 1024, а от МБ к ГБ на 1000. Сначала зафиксируйте исходную единицу, затем множитель и только после этого округляйте результат.
Представим накопитель с маркировкой 1 ТБ. В десятичной системе это ровно 1 000 000 000 000 байт. Если программа делит то же число на 230, она получает 931,32 двоичных гигабайта, то есть ГиБ. Интерфейс при этом может по привычке написать «931 ГБ».
Разница между 1000 и 931 не означает, что производитель спрятал 69 миллиардов байтов. Программа просто пересчитала тот же триллион байтов более крупными порциями. Это похоже на 1000 граммов и 1 килограмм: число изменилось вместе с размером единицы, количество вещества осталось тем же.
С накопителем на 500 ГБ получится около 465,66 ГиБ. Чем больше заявленная ёмкость, тем заметнее числовой разрыв. Именно поэтому коробка, системная информация и программа для разметки диска могут показывать разные числа.
Пересчёт единиц и занятое место являются разными причинами. Форматирование создаёт служебные структуры, операционная система и приложения занимают часть накопителя, а некоторые устройства резервируют отдельные разделы. Эти байты действительно недоступны пользователю. Переход от ТБ к ТиБ ничего не занимает, он только меняет масштаб записи.
Есть простой способ проверить ситуацию. Найдите точную ёмкость в байтах. Если она близка к заявленному десятичному значению, основная разница возникла из-за единиц. Затем отдельно посмотрите занятое место и служебные разделы. Так одна загадка распадается на два обычных расчёта.
Для точного перевода достаточно короткой последовательности:
Например, 8000 бит равны 1000 байтам. Это ровно 1 кБ, но около 0,9766 КиБ. А 8192 бита равны 1024 байтам: ровно 1 КиБ и 1,024 кБ. Сначала можно перевести биты в байты, а затем выбрать нужное основание.
Конвертер eCalc из битов в 1024-байтные блоки использует двоичный коэффициент. Перевод килобайтов в мегабайты тоже следует старой двоичной практике и делит значение на 1024. В строгой записи такие результаты соответствуют КиБ и МиБ.
Если единица подписана точно, противоречия нет: 1 кБ всегда равен 1000 байтам, 1 КиБ всегда равен 1024. Путаница начинается только там, где старое слово «килобайт» используют для двух разных порций данных. Проверяйте букву i или исходное число байтов, и пропавшие гигабайты обычно находятся быстрее, чем открывается калькулятор.
Напишите своё мнение, комментарий или предложение.