Почему на диске памяти меньше, чем  написано на упаковке? Вы наверняка хоть раз задавались таким вопросом.

Вот покупаешь смартфон, где на коробке написано: встроенная память 128 ГБ. Включаешь, заходишь в настройки. А там свободной памяти только 115 ГБ. Как так?

Наверняка, вы также отвечали сами себе что-то вроде: ну да, но там же какое-то место занимает прошивка, все дела. Безусловно…

Но как насчет флешки или жесткого диска, где вместо 1 терабайта всего 930 гигов? У флешки тоже прошивка/система на десяток гигабайт? Это вряд ли.

Поэтому сегодня объясним, почему так происходит, как это устроено. И главное, вы азнаете, что такое МЕБИБИТЫ чем отличаются от мегабайтов?? И почему файлы воруют место?

Оказывается, у этой проблемы есть три причины.

1. Разные системы исчисления

Первая — математическая. Дело в системах исчисления. В бытовой жизни мы обычно используем десятичную систему исчисления, в которой 10 цифр: от 0 до 9. Скорее всего для нас она самая интуитивная из-за 10 пальцев на руках. Логично. Получается, если бы вдруг эволюция решила оставить нам по 6 пальцев, то двенадцатиричная система была бы для нас такой же естественной. Наверное…

В компьютерной технике используется двоичная система исчисления с двумя цифрами: 0 и 1. Это удобно, потому что в компьютерах используются логические операции, принимающие два значения: истина и ложь.

Как вы думаете, какая из двух систем используется для обозначения объемов памяти в устройствах? Оказывается, обе. И в этом вся проблема.

Оказывается, мы смотрим на флешку и имеем дело сразу с двумя гигабайтами: десятичным и двоичным. Сейчас объясню.

В международной системе единиц СИ есть общеприянтые префиксы: например кило или мега. 1 Мегаватт — это ровно миллион ватт. 1 килограмм — ровно тысяча граммов.

И отсюда получается, что 1 килобайт — это ровно тысяча байт. Ну или 10 в третьей степени байт. Вроде логично. Но в чем подвох?

Подвох в том, что в реальности электроника и память состоит из двоичных элементов. Потому что она заточена под двоичные вычисления и ей так удобнее. Помните? Собственно минимальная единица информации 1 бит — это по сути одна цифра в двоичном коде, то есть значение 0 или 1. Дальше 8 бит образуют 1 байт. Потому что 8 — это степень двойки, 2 в третьей степени.

А чтобы хранить больше информации, нам надо подобрать степень двойки, которая похожа на 1000. И есть такая — это 2 в десятой степени или 1024 байта. Вы часто сталкивались с этой цифрой, например в разрешении экранов, потому что компьютерам с ними удобно.

И реальные ячейки памяти состоят именно из такого количества байт — 1024.

А дальше возникает проблема. Дело в том, что согласно международным стандартам на упаковке принято указывать размер в десятичных единицах. Но казалось бы подумаешь: вместо 1024 байт мы получаем 1000. Не так страшно — это всего 2.5 процента. Но есть проблемка. Это мы говорили всего про килобайт. А с ростом масштаба накапливается и проблема.

Потому что 1024 * 1024 это уже миллион 48 тысяч с фигом, то есть почти 5 процентов разницы. Это только для мегабайта. Но кто же покупает флешку на мегабайт?

Умножаем еще раз.

1024 * 1024 * 1024 = 1 0 73 — миллиард 73 миллиона с фигом. То есть 7 процентов потерь для гигабайта.

И еще раз: 1024 * 1024 * 1024 * 1024 = 1 099 триллион и 99 миллиардов. Почти 10 процентоов потерь будет на вашем жестком диске в терабайт.

И путаница возникает. А операционные системы любят использовать двоичную систему.

Главным образом, это касается Windows, которая до сих пор в «Проводнике» пишет размер файлов в двоичных мегабайтах.

Apple перешла на десятичные только с iOS 10 и в операционной системе Mac OS X Leopard.

Android по дефолту тоже использует десятичные обозначения, но все зависит от софта. Например, Total Commander покажет размер файла в привычных двоичных.

Один и тот же файл на Windows весит 1.97 ГБ, а на iPhone — 2.06 ГБ. При этом размер в байтах будет равный. Парадокс.

Какое есть решение?

Оказывается, решение существует. И это введение нормальных терминов.

В 1998 году Международная электротехническая комиссия осознала проблему и постановила все классические названия кило и гигабайты использовать для десятичных объемов. А для двоичных придумали новые префиксы: Киби, Мебибайты, Гибибайты и так далее…

То есть второй слог префикса заменили на «би» — что отсылает к бинарный, то есть двоичный. И правильное обозначение такое: GiB, с буковой «ай»: KiB, MiB, GiB, TiB.

Да-да, если вы смотрите размер файла на iPhone или MacBook, то он написан в МебиБайтах. Живите с этим!

Что в итоге?

1 гигабайт меньше 1 гибибайта. Примерно на 7 процентов.

1 GB = 1 000 000 000 B

1GiB = 1 073 741 824 B

А на упаковке всегда пишут именно МЕГАбайты. С проблемой номер один разобрались.

2. Файлы воруют место…

Следующая проблема немного косвенная. Оказывается, файлы тоже воруют место на дисках. Но связана она с тем, сколько места занимают отдельные файлы.

Вы наверняка замечали, что если например в Windows открыть свойства файла: будет написано размер такой-то. А снизу еще одна строчка: на диске занимает столько-то. Почему так?

Это тоже имеет отношение к тому, как файлы хранятся в памяти. Дело в том, что они записываются на диск не подряд как треки на виниловой пластинке.

При форматировании файловая система разрезает диск на кластеры. Типа странички. И начать записывать новый файл вы можете только перевернув такую страничку. У каждой системы кластеры разные. Например, для NTFS это может быть 4 килобайта. И если файл сильно меньше, то мы потеряем почти всю страничку. При этом большие файлы можно записывать подряд. Потери при их хранении будут минимальны.

3. Место под систему

Ну и третья причина, о который вы догадались сразу. Это место под системную информацию. Это не всегда только операционка. Например, флешки и жесткие диски тоже забирают часть хранилища при форматировании для разметки, но это обычно совсем немного.

В случае со смартфоном или компьютером, речь идет о больших объемах. Например, iPhone 12 из коробки работал на iOS 14, которая занимала около 5 гигабайт. Вернее Гибибайт. Но по факту вы получите еще меньше полезной памяти, потому что 5 гибибайт это только система. А во время работы операционка быстро обрастет системными файлами и кешами. И все это вместе будет занимать около 10 Гибибайт. Такие дела.

Итоги

Надо понимать сколько занимают ваши файлы — и интересно, что разные операционки имеют разное мнение по этому поводу. А главное, никто до сих пор не хочет полноценно переходить на новую терминологию, потому что наверное она дурацкая.