Почему на диске памяти меньше, чем написано на упаковке? Вы наверняка хоть раз задавались таким вопросом.
Вот покупаешь смартфон, где на коробке написано: встроенная память 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 Гибибайт. Такие дела.
Итоги
Надо понимать сколько занимают ваши файлы — и интересно, что разные операционки имеют разное мнение по этому поводу. А главное, никто до сих пор не хочет полноценно переходить на новую терминологию, потому что наверное она дурацкая.