Интернет магазин китайских планшетных компьютеров



Компьютеры - A-закон

23 января 2011





Описание реализации алгоритма для 16-битных знаковых целых

На самом деле из исходного числа используется не более 12 бит, 4 наименее значащих бита можно сразу отбросить.

Шаг 1

Если число отрицательно, оно обращается, при этом принимается, что s = 0, иначе s = 1.

Шаг 2

16-битное число преобразуется в 8-битное в соответствии с таблицей разделены знаком «`»):

Исходное число Сжатое
s000`0000`wxyz`**** s000`wxyz
s000`0001`wxyz`**** s001`wxyz
s000`001w`xyz*`**** s010`wxyz
s000`01wx`yz**`**** s011`wxyz
s000`1wxy`z***`**** s100`wxyz
s001`wxyz`****`**** s101`wxyz
s01w`xyz*`****`**** s110`wxyz
s1wx`yz**`****`**** s111`wxyz

Примечания:

  • s—знаковый бит.
  • Звёздочками «*» показаны биты, теряющиеся при сжатии.

Шаг 3

Биты инвертируются через один, начиная с самого правого.

Примеры

В примерах ниже индекс «10» соответствует десятичному числу, индекс «2» — двоичному; в «Шаге 1» подчёркнута та часть цифр, которая переходит в «wxyz» на «Шаге 2».

Пример 1
66610 = 0000`0010`1001`10102
Шаг 1. Знаковый бит s = 1: 1000`0010`1001`10102
Шаг 2. Собственно сжатие: 1010`01002
Шаг 3. Инвертирование: 1111`00012 = F116 = 24110.
Пример 2
—666610 = 1110`0101`1111`01102
Шаг 1. Число обращаем, знаковый бит s = 0: 0001`1010`0000`10102
Шаг 2. Собственно сжатие: 0101`10102
Шаг 3. Инвертирование: 0000`11112.


Просмотров: 1361


<<< Энтропийное кодирование