Zákon
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 13. března 2013; kontroly vyžadují
9 úprav .
A-law je ztrátový kompresní algoritmus používaný ke kompresi audio dat
.
Implementace pro 16bitová celá čísla se znaménkem
Princip kódování je podobný kódování čísel s pohyblivou řádovou čárkou . Každý vzorek je zakódován do 8bitového pole. Nejvýznamnější bit je znaménkový bit, další 3 bity jsou exponent bez znaménka a poslední 4 bity jsou mantisa . Z použitých 16 bitů tedy pouze 12 bitů obsahuje smysluplnou informaci a 4 bity ze 16 jsou někdy vyřazeny.
Krok 1
Pokud je číslo záporné, je převrácené a předpokládá se, že s = 0, jinak s = 1.
Krok 2
16bitové číslo se převede na 8bitové číslo podle následující tabulky. Pro srozumitelnost jsou nibbles - nibbles - odděleny zadním zaškrtnutím (`); s je znaménkový bit; hvězdičky označují bity, které se při kompresi ztratí.
původní číslo |
stlačený
|
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
|
Krok 3
Bity jsou invertovány přes jedničku, počínaje úplně vpravo (to znamená, že 8bitové číslo je XORed 0x55).
Příklady
V níže uvedených příkladech dolní index označuje bitovou hloubku ( desítková nebo binární ); v kroku 1 je mantisa podtržena (část číslic, která se v kroku 2
změní na wxyz ).
Příklad 1
666 10 = 0000`0010`1001`1010 2
Krok 1. Znaménko bit s = 1: 0000`001 0`100 1`1010 2
Krok 2. Samotná komprese (odpovídá s001`wxyz): 1010`0100 2
Krok 3. Invertovat: 1111`0001 2 = F1 16 = 241 10 .
Příklad 2
-6666 10 = 1110`0101`1111`0110 2
Krok 1. Obraťte číslo, znaménko bit s = 0: 0001` 1010 `0000`1001 2
Krok 2. Samotná komprese (odpovídá s011`wxyz): 0101`1010 2
Krok 3. Invertovat: 0000`1111 2 =15 10
Viz také