А-закон - алгоритм стиснення з втратою інформації, застосовується для стиснення звукових даних.

Реалізації для 16-бітових знакових цілих

Принцип кодування схожий з кодуванням чисел з плаваючою комою. Кожен семпл кодується в 8 - бітне поле. Старший біт - біт знака, наступні 3 біти - Беззнаковая експонента, останні 4 - мантиса. Таким чином з використовуваних 16 біт, тільки 12 біт містять значущу інформацію, а 4 біти з 16 іноді відкидаються.

Крок 1

Якщо число негативно, воно звертається, при цьому приймається, що s = 0, інакше s = 1.

Крок 2

16-бітове число перетвориться в 8-бітне у відповідності з наступною таблицею (для наочності підлозі байти ( ніббли) розділені знаком "` "; s - знаковий біт; зірочками показані біти, що втрачаються при стискуванні):

Початкове число Стисле
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
Крок 3

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


Приклади

У прикладах нижче індекс "10" відповідає десятковому числу, індекс "2" - двоичному; в "Кроці 1" підкреслена та частина цифр, яка переходить в "wxyz" на "Кроці 2" ( мантиса).

Приклад 1
666 10 = 0000 `0010` 1001 `1010 2
Крок 1. Знаковий біт s = 1: 1000 `001 0` 100 1 `1010 2
Крок 2. Власне стиск (відповідає s010 `wxyz): 1010` 0100 2
Крок 3. Інвертування: 1111 `0001 2 = F1 16 = 241 10.
Приклад 2
-6666 10 = 1110 `0101` 1111 `0110 2
Крок 1. Число звертаємо, знаковий біт s = 0: 0001 `1010` 0000 `1010 2
Крок 2. Власне стиск (відповідає s101 `wxyz): 0101` 1010 2
Крок 3. Інвертування: 0000 `1111 2.


Перегляд цього шаблону Методи стиснення
Теорія
Інформація Власна Взаємна Ентропія Умовна ентропія Складність Надмірність
Одиниці виміру Біт Нат Ніббл Хартлі Формула Хартлі
Без втрат
Ентропійно стиснення Алгоритм Хаффмана Адаптивний алгоритм Хаффмана Алгоритм Шеннона - Фано Арифметичне кодування (Інтервальне) Коди Голомба Дельта Універсальний код ( Еліаса Фібоначчі)
Словникові методи RLE Deflate LZ ( LZ77/LZ78 LZSS LZW LZWL LZO LZMA LZX LZRW LZJB LZT)
Інше RLE CTW BWT MTF PPM DMC
Аудіо
Теорія Згортка PCM Аліасінг Дискретизація Теорема Котельникова
Методи LPC (LAR LSP) WLPC CELP ACELP A-закон μ-закон MDCT Перетворення Фур'є Психоакустичної моделі
Інше Компресор аудіосигналу Стиснення мови Смугове кодування
Зображення
Терміни Колірний простір Піксель Субдіскретізація насиченості Артефакти стиснення
Методи RLE DPCM Фрактальний Вейвлетного EZW SPIHT LP ДКП ПКЛ
Інше Бітрейт Test images PSNR Квантування
Відео
Терміни Характеристики відео Кадр Типи кадрів Якість відео
Методи Компенсація руху ДКП Квантування Вейвлетного
Інше Відеокодек Rate distortion theory ( CBR ABR VBR)