A-закон

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

А-закон — алгоритм сжатия с потерей информации, применяется для сжатия звуковых данных.

Содержание

[править] Описание реализации алгоритма для 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

Биты инвертируются через один, начиная с самого правого (то есть с 8-битным числом проделывается XOR 0x55).

[править] Примеры

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

Пример 1. 66610 = 0000`0010`1001`10102

Шаг 1. Знаковый бит s = 1: 1000`0010`1001`10102

Шаг 2. Собственно сжатие (соответствует s010`wxyz): 1010`01002

Шаг 3. Инвертирование: 1111`00012 = F116 = 24110.

Пример 2. —666610 = 1110`0101`1111`01102

Шаг 1. Число обращаем, знаковый бит s = 0: 0001`1010`0000`10102

Шаг 2. Собственно сжатие (соответствует s101`wxyz): 0101`10102

Шаг 3. Инвертирование: 0000`11112.

[править] См. также

На других языках