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é