En lov
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 13. marts 2013; checks kræver
9 redigeringer .
A-law er en tabsgivende komprimeringsalgoritme, der bruges til at komprimere lyddata
.
Implementeringer til 16-bit signerede heltal
Princippet for indkodning ligner kodningen af flydende kommatal . Hver prøve er kodet ind i et 8-bit felt. Den mest signifikante bit er fortegnsbitten, de næste 3 bit er eksponenten uden fortegn , og de sidste 4 bit er mantissen . Af de anvendte 16 bit er det således kun 12 bit, der indeholder meningsfuld information, og 4 bit ud af 16 bliver nogle gange kasseret.
Trin 1
Hvis tallet er negativt, inverteres det, og det antages, at s = 0, ellers s = 1.
Trin 2
Et 16-bit tal konverteres til et 8-bit tal i henhold til følgende tabel. For klarhedens skyld er nibbles - nibbles - adskilt af et backtick (`); s er fortegnsbitten; stjerner angiver bits, der går tabt under komprimering.
originalt nummer |
komprimeret
|
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
|
Trin 3
Bits inverteres gennem én, startende fra længst til højre (det vil sige, et 8-bit tal er XORed 0x55).
Eksempler
I eksemplerne nedenfor angiver subscript bitdybden ( decimal eller binær ); i trin 1 er mantissen understreget (en del af cifrene, der bliver til wxyz i trin 2).
Eksempel 1
666 10 = 0000`0010`1001`1010 2
Trin 1. Fortegnsbit s = 1: 0000`001 0`100 1`1010 2
Trin 2. Selve komprimeringen (svarer til s001`wxyz): 1010`0100 2
Trin 3. Inverter: 1111`0001 2 = F1 16 = 241 10 .
Eksempel 2
-6666 10 = 1110`0101`1111`0110 2
Trin 1. Vend tallet om, fortegn bit s = 0: 0001` 1010 `0000`1001 2
Trin 2. Selve komprimeringen (svarer til s011`wxyz): 0101`1010 2
Trin 3. Inverter: 0000`1111 2 =15 10
Se også