Найти в Дзене

Хранение информации в компьютере

Сегодня мы разберёмся с тем, как устроено хранение информации в компьютере. Мы поговорим о том, как данные оказываются на жёстком диске или в другой памяти, каким образом компьютер их считывает и почему в основе любого современного устройства лежат всего два состояния — ноль и единица.

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

В современном мире информационные технологии стали неотъемлемой частью нашей жизни. Компьютеры, смартфоны, планшеты и даже бытовая техника работают с цифровыми данными. Мы храним на них фотографии, документы, музыку, фильмы, а иногда и целые архивы знаний.

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

Любой современный компьютер — это цифровое устройство. В прошлой статье, посвящённой заданию 7 ЕГЭ по информатике, мы уже обсуждали разницу между аналоговыми и цифровыми сигналами. Аналоговые величины могут принимать бесконечное множество значений, а цифровые — только фиксированный набор.

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

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

-2

Одно состояние условно обозначается как «1», другое — как «0». На этом принципе строится двоичная система счисления, которая позволяет представлять любые данные: от простого символа «А» до сложной 3D-графики вашей любимой видеоигры. Именно благодаря чередованию нулей и единиц компьютеры могут хранить и обрабатывать гигабайты и терабайты информации.

Аналогично, вместо 0 и 1 можно было бы использовать любые другие обозначения: «Да» и «Нет», «Истина» и «Ложь», «Включено» и «Выключено». Даже простая лампочка способна передать ту же идею — горит она или нет. Суть всегда сводится к тому, что система имеет два состояния.

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

Представим ситуацию: у нас есть привычная пятибалльная шкала оценивания в школе — от 1 до 5. Нужно сохранить эти оценки в компьютере. Казалось бы, что может быть проще — записали цифру 5 в память и всё. Но на самом деле микросхемы памяти не умеют хранить «пятёрку» как таковую. Для них существует лишь два варианта: нет сигнала (логический 0) или есть сигнал (логическая 1).

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

Например, значение «1» можно записать как одну единицу — 1. Для «2» уже нужно больше символов: 10. Для «3» подойдёт 11. Число «4» в двоичной системе выглядит как 100, а «5» — 101. То есть мы буквально своими руками только что пришли к двоичной системе счисления — основе всего цифрового мира.

Теперь возникает практический вопрос: сколько памяти потребуется для хранения одной оценки? Если для числа «1» хватит 1 бита, а для «5» уже нужно 3, то логично, что для надёжности мы должны выделить именно 3 бита на каждую оценку. Иначе не все значения смогут уместиться. Например, если ограничиться только двумя битами, то мы сможем закодировать максимум четыре значения (00, 01, 10, 11), а пятая оценка просто «не пролезет».

Можно представить память компьютера как таблицу из маленьких ячеек. В каждой ячейке может лежать либо 0, либо 1. Когда мы кодируем число, оно как бы «раскладывается» по этим ячейкам. Если ячеек выделено меньше, чем нужно, число не поместится. А если требуется меньше, чем есть, то остаётся пустое место, которое принято заполнять незначащими нулями.

Например, число 3 (11 в двоичной системе) в ячейках из 3 бит будет записано так: 011. Слева от 11 у нас находится как раз тот самый один незначащий нуль. Он никак не влияет на значение числа (поэтому и называется незначащим), но позволяет «заполнить» до конца ячейки памяти, чтобы не оставалось пустого места и все наши кодовые слова были одной длины.

Это правило действует везде: чтобы хранить диапазон значений, всегда нужно заранее выделить минимальное необходимое количество бит. А как нам узнать, какое максимально возможное число поместится в наши ячейки из трёх бит?

-3

Как видите, на изображении выше у нас есть еще некое число «N» — максимально возможное для нашей трёхбитной системы памяти. Давайте определим, сколько различных чисел можем закодировать с помощью трёх битов.

Для этого воспользуемся формулой Хартли:

-4

Здесь:

  • N — количество различных вариантов кодирования
  • i — используемое количество бит

По данной формуле имеем количество вариантов кодирования 2^3 (знаком ^ отмечается степень, например, здесь 2 в 3-й степени), то есть всего 8 вариаций. Таким образом можем закодироватьнапример, все числа от 0 до 7. Также говорят, что в таком случае мы имеем алфавит из 8 символов или мощность алфавита равна 8.

Естественно, под алфавитом здесь подразумевается на буквы «абв» и так далее, а некий набор символов. Он может включать в себя как цифры, так и буквы или специальные символы. Мощность же алфавита означает количество символов, которое содержится в этом алфавите.

Для вычисления числа бит i, которое потребуется для кодирования N символов воспользуемся следующей формулой:

-5

Давайте для примера подсчитаем, сколько бит потребуется нам для кодирования всего 5 символов. Для этого вычислим логарифм числа 5 по основанию 2. Получим приближённое значение 2,322.

Это у нас дробное число, но количество ячеек (бит) всегда должно быть целым! Мы же не можем разделить и без того минимальную единицу измерения информации?

Встаёт вопрос, как из числа 2,322 получить целое. У нас есть два пути округления: в большую или меньшую сторону.

Но давайте рассуждать логически. Мы уже видели, что число 5 имеет значение «101», то есть тут нужно 3 бита. Тогда, если мы округлим 2,322 до 2, то все наши значения не поместятся.

Отсюда следует вывод: применяя формулу Хартли для поиска количества бит всегда округляем результат в большую сторону!

То есть, даже если для всех, кроме последнего, числа требуется всего, допустим, 6 бит. Но для единственного, самого большого, уже потребуется целых 7, то мы обязаны будем выделить все 7 бит для кодирования наших значений!

И сразу важно подчеркнуть: хотя бит является минимальной единицей измерения информации, в реальных компьютерах он сам по себе не используется для записи и чтения данных. Минимальной адресуемой единицей памяти является байт. Это означает, что мы не можем напрямую сохранить, скажем, «3 бита информации» — в любом случае компьютер выделит под них один целый байт.

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

Например, хоть для хранения школьной оценки нам нужно всего 3 бита, но на деле в памяти займётся 1 байт, потому что меньше выделить нельзя. А если требуется хранить 9 бит информации, то компьютер отведёт уже 2 байта (16 бит), так как дробить память меньше, чем по одному байту, компьютер не может.

Чтобы уверенно ориентироваться в объёмах данных, полезно помнить базовые соотношения:

1 байт = 8 бит = 2^3 бит

1 Кбайт = 2^10  байт = 2^10  · 2^3 бит = 2^13 бит

1 Мбайт = 2^10 Кбайт = 2^10 · 2^3 байт = 2^20 · 2^3 бит = 2^23 бит

1 Гбайт = 2^10  Мбайт = 2^10 · 2^3 Кбайт = 2^20 · 2^3 байт = 2^30 · 2^3 бит = 2^33 бит

Здесь важно не путать бит (b) и байт (B). Это разные единицы: бит обозначается маленькой буквой «b», байт — большой «B». Например, интернет-провайдеры часто указывают скорость в битах в секунду (Мбит/с), а жёсткие диски и флешки измеряются в байтах (ГБ, ТБ). Отсюда и частые недоразумения: 100 Мбит/с — это не 100 мегабайт в секунду, а примерно 12,5 МБ/с.

Немного про терминологию. В русскоязычных источниках чаще всего используется привычное сокращение «Кбайт» или «КБ», которое мы понимаем как килобайт.

Под ним обычно подразумевают 1024 байта. Но строго говоря, приставка «кило-» в системе СИ всегда означает умножение на 1000, а не на 1024. Из-за этого возникла путаница.

Чтобы её устранить, в международной практике ввели специальные двоичные приставки. Так появился кибибайт (KiB), равный 1024 байтам. Дальше по аналогии: мебибайт (MiB) — это 1024 кибибайта, гибибайт (GiB) — 1024 мебибайта, и так далее.

То есть «кило», «мега», «гига» относятся к десятичной системе (1000, 1 000 000, 1 000 000 000), а приставки «киби», «меби», «гиби» — к двоичной (1024, 1 048 576, 1 073 741 824).

На практике это различие чаще всего замечают при покупке носителей информации. Например, на флешке может быть написано «1 GB», что в пересчёте на байты даст ровно 1 000 000 000.

А операционная система покажет доступный объём как ~0,93 GiB, потому что она считает память в двоичных единицах. Покупатель думает, что его «обманули», хотя на самом деле речь идёт просто о разных системах счисления.

В России и большинстве учебных материалов по информатике принято использовать именно двоичный подход: 1 килобайт = 1024 байта, 1 мегабайт = 1024 килобайта и так далее. Но полезно знать и международные обозначения, чтобы не путаться в технической документации и понимать, почему «гигабайт на упаковке» и «гигабайт в Windows» — это немного разные величины.

Таким образом, вся современная цифровая техника опирается на простейшую идею — наличие всего двух состояний: 0 и 1. Из них строятся биты, из битов байты, а дальше мегабайты, гигабайты и терабайты. Всё, что мы видим на экране — текст, фотографии, музыка или фильмы — это лишь длинные цепочки нулей и единиц, закодированные по определённым правилам.

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

Помимо всего прочего, фундаментальные знания о принципах хранения информации необходимы и при решении задания 11 ЕГЭ по информатике, которому и посвящена следующая статья.

<<< Последняя статья Следующая статья >>>