5. Системное ПО


При упаковке графической информации чаще встречается первая ситуация, а при упаковке текстов – вторая ситуация.
Понять идею этого метода упаковки позволяет следующий анекдот.
Один в прошлом известный полководец решил написать достаточно объемные мемуары. Составленные воспоминания звучали примерно так.
«Утром я вскочил на своего коня и помчался в штаб армии. Подковы коня издавали звук «цок-цок-цок-цок-цок-цок-цок-цок-цок-цок-цок-цок-цок-цок-цок-цок ...». Через двое суток я соскочил с коня и вошел в штаб».
Для увеличения объема литературного произведения словосочетание «цок» было написано «писателем» на двухстах страницах. Очевидно, что информативность «мемуаров» не изменилась бы, если вместо 200 страниц перечисления цокающих звуков было бы указано: «Затем следуют 64 000 раз звуки «цок-цок».
Проиллюстрируем эту же идею другим примером.
Пусть имеется следующее изображение звездного неба: на черном фоне видны редкие белые звезды. При растровом представлении неба информация в ЭВМ будет храниться в таком виде: черное-черное-черное-черное-черное-белое-черное-черное-черное-черное-черное и т. д.
Естественно, что значительно компактнее хранить информацию, указав, сколько раз подряд идут черные пиксели, сколько раз белые и т. д. Рассмотрим детально метод упаковки – RLE.
Упакованная этим методом последовательность состоит из управляющих байтов, за которым следуют один или несколько байтов данных. При этом если старший бит управляющего байта равен 1, то следующий байт данных нужно повторить при распаковке столько раз, сколько указано в оставшихся 7 байтах управляющего байта. Например, управляющий байт 10001001 говорит, что следующий за ним байт нужно повторить 9 раз, так как 10012 = 910.
Если старший бит управляющего байта равен 0, то при распаковке надо взять следующие байты без изменений. Число байтов, которые берутся без изменений, указывается в оставшихся 7 битах. Например, управляющий байт 00000011 говорит, что следующие за ним 3 байта нужно взять без изменений.
Рассмотрим пример архивации методом RLE.



Сайт управляется системой uCoz