Если вы когда-нибудь задавались вопросом, почему файлики "весят" столько, сколько они весят, и как вообще возможно с помощью двух символов (1 и 0) записывать фильмы, картинки, музыку и видеоигры, то эта статья даст вам некоторое понимание.
Почти полное понимание этого нам даст простейшая формула. Это формула Хартли. (Ну, частный ее случай)
N = 2^i N — количество вариантов чего-либо i - требуемое количество бит
Так сколько весят файлы?
Давайте начнем с текста. Го посчитаем, сколько весит предыдущее предложение? В нем 24 символа, каждый из которых — либо русская буква, либо знак препинания, либо пробел.
Очевидно, чтобы узнать, сколько будет весить это сообщение, нам нужно 24 символа умножить на "вес" одного символа. Но сколько он будет весить?
Для начала нам нужно узнать, сколько может быть букв, цифр, знаков препинания и других закорючек на месте каждого символа этого предложения.
Так как я пишу эту статью на русском языке, давайте условимся, что на месте каждого символа могут быть 33 буквы в двух регистрах (строчные и прописные), 10 цифр и штук 10 знаков препинания. Всего 86 символов будет достаточно, чтобы написать эту статью. Это называется "Мощность алфавита".
Так, а что дальше? Нужно умножить 86 на 24? Это предложение весит 2064? 2064 чего? Бит? Четверть килобайта для предложения из четырех слов — это многовато, не?
Здорово, что вы решили самостоятельно порассуждать прямо посреди этой статьи, но я напомню вам про формулу, о которой мы ведем речь. Как раз с ее помощью мы поймем, сколько бит будет весить предложение.
Если бы я писал этот текст всего двумя буквами (например, А и Б), то нам понадобилось бы по одному биту на каждый символ. Я бы смог закодировать букву А символом 0, а букву Б символом 1. Тогда коду 1010, соответствовало бы слово БАБА. Надеюсь, вы уловили мысль.
Но у нас не 2 буквы, а 86. Сколько будет весить один символ в таком случае?
Смотрите: 2 битами можно закодировать 4 буквы. Например, А — 00, Б — 01, В — 10, Г — 11. В таком случае слову БАГ будет соответствовать код 010011 и оно будет весить 6 бит.
Добавление одного бита увеличивает количество вариантов того, что мы кодируем, в два раза. Тремя битами мы сможем записать уже 8 различных символов, и у них будут вот такие коды: 000, 001, 010, 011, 100, 101, 110, 111.
Используя формулу Хартли, мы быстро поймем, что 6 бит нам будет еще недостаточно, чтобы уместить в себя коды всех 86 символов, но 7 бит нам будет вполне достаточно, с запасом. Потому что 2 в 7-й это 128. Да, 42 кода останутся незанятыми, но в этом нет ничего страшного. Главное, что все наши символы получат по семибитному коду.
Мы готовы считать!
7 * 24 = 168 бит. Или 21 байт. Фраза "Давайте начнем с текста." будет весить 21 байт! Мы молодцы.
Всё то же самое будет и с картинками, например. Если наше изображение имеет размер 1920 на 1280 точек, и на месте каждой точки может быть один из 16 миллионов цветов, то весить оно будет 7 мегабайт! Вот расчеты:
1920 * 1280 = 2 457 600 — Столько в изображении точек всего.
2^24 = 16 777 216 — 24 бит хватит, чтобы закодировать один из 16 млн цветов.
24 * 2 457 600 = 58 982 400 бит. — Столько будет весить это изображение в битах.
58 982 400 / 1024 / 1024 / 8 = 7.03125 — Это вот столько мегабайт.
Надеюсь, вы теперь поняли, как с помощью единичек и ноликов мы можем закодировать любой файлик. Кодирование музыки и видео достойно отдельной статьи, так что не теряйтесь и подписывайтесь на пацанскую информатику!
Спасибо, что прочли! Если вам понравилась бытовая информатика, то знайте, что я веду подготовку к ЕГЭ по информатике и ютюб-канал «Пацанская информатика», там тоже хорошо.