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.

См. также

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home