А-закон — алгоритм стиснення зі втратою інформації, застосовується для стиснення звукових даних.
Реалізації для 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).
Приклади
У прикладах нижче підрядковий індекс позначає розрядність (десяткове чи двійкове); на 1 кроці підкреслено мантису (частину цифр, що переходить у wxyz на 2 кроці).
- Приклад 1
- 66610 = 0000 `0010'1001'10102
- Крок 1. Знаковий біт s = 1: 0000'0010'1001'10102
- Крок 2. Власне стискання (відповідає s001'wxyz): 1010'01002
- Крок 3. Інвертування: 1111'00012 = F116 = 24110 .
- Приклад 2
- —666610 = 1110'0101'1111'01102
- Крок 1. Число обертаємо, знаковий біт s = 0: 0001`1010`0000'10012
- Крок 2. Власне стискання (відповідає s011'wxyz): 0101'10102
- Крок 3. Інвертування: 0000'11112 = 1510
Див. також
Посилання
- Waveform Coding Techniques — подробиці реалізації (проте рівняння A-закону помилкове)
- Реалізація A-закону мовою C зі зразком коду
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
A zakon algoritm stisnennya zi vtratoyu informaciyi zastosovuyetsya dlya stisnennya zvukovih danih Realizaciyi dlya 16 bitovih znakovih cilihPrincip koduvannya shozhij na koduvannya chisel z ruhomoyu komoyu Kozhen sempl koduyetsya u 8 bitove pole Starshij bit bit znaka nastupni 3 biti bezznakova eksponenta ostanni 4 mantisa Takim chinom z vikoristovuvanih 16 bit tilki 12 bit mistyat znachushu informaciyu a 4 biti z 16 inodi vidkidayutsya Krok 1 Yaksho chislo vid yemne jogo obertayut pri comu prijmayetsya sho s 0 inakshe s 1 Krok 2 16 bitove chislo peretvoryuyetsya na 8 bitove vidpovidno do takoyi tablici dlya naochnosti pivbajti nibli rozdileno znakom s znakovij bit zirochkami pokazano biti sho gublyatsya pri stiskanni Pochatkove chislo Stisnenes000 0000 wxyz s000 wxyzs000 0001 wxyz s001 wxyzs000 001w xyz s010 wxyzs000 01wx yz s011 wxyzs000 1wxy z s100 wxyzs001 wxyz s101 wxyzs01w xyz s110 wxyzs1wx yz s111 wxyzKrok 3 Biti invertuyutsya cherez odin pochinayuchi vid pravogo tobto z 8 bitovim chislom vikonuyetsya operaciya XOR 0x55 Prikladi U prikladah nizhche pidryadkovij indeks poznachaye rozryadnist desyatkove chi dvijkove na 1 kroci pidkresleno mantisu chastinu cifr sho perehodit u wxyz na 2 kroci Priklad 1 66610 0000 0010 1001 10102Krok 1 Znakovij bit s 1 0000 0010 1001 10102 Krok 2 Vlasne stiskannya vidpovidaye s001 wxyz 1010 01002 Krok 3 Invertuvannya 1111 00012 F116 24110 dd Priklad 2 666610 1110 0101 1111 01102Krok 1 Chislo obertayemo znakovij bit s 0 0001 1010 0000 10012 Krok 2 Vlasne stiskannya vidpovidaye s011 wxyz 0101 10102 Krok 3 Invertuvannya 0000 11112 1510 dd Div takozhG 711 Myu zakonPosilannyaWaveform Coding Techniques podrobici realizaciyi prote rivnyannya A zakonu pomilkove Realizaciya A zakonu movoyu C zi zrazkom kodu