Laki

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 13. maaliskuuta 2013 tarkistetusta versiosta . tarkastukset vaativat 9 muokkausta .

A-laki  on häviöllinen pakkausalgoritmi, jota käytetään äänidatan pakkaamiseen .

Toteutukset 16-bittisille etumerkillisille kokonaisluvuille

Koodauksen periaate on samanlainen kuin liukulukujen koodaus . Jokainen näyte koodataan 8-bittiseen kenttään. Merkittävin bitti on etumerkkibitti, seuraavat 3 bittiä ovat etumerkitön eksponentti ja viimeiset 4 bittiä mantissa . Siten käytetystä 16 bitistä vain 12 bittiä sisältää merkityksellistä tietoa, ja 4 bittiä 16:sta joskus hylätään.

Vaihe 1

Jos luku on negatiivinen, se käännetään ja oletetaan, että s = 0, muuten s = 1.

Vaihe 2

16-bittinen luku muunnetaan 8-bittiseksi seuraavan taulukon mukaisesti. Selvyyden vuoksi nibbles  - nibbles -  erotetaan selkämerkillä (`); s on merkkibitti; tähdet osoittavat bittejä, jotka menetetään pakkaamisen aikana.

alkuperäinen numero pakattu
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
Vaihe 3

Bitit käännetään ykkösestä alkaen äärimmäisestä oikeasta (eli 8-bittinen luku on XORed  0x55).

Esimerkkejä

Alla olevissa esimerkeissä alaindeksi ilmaisee bittisyvyyden ( desimaali tai binääri ); vaiheessa 1 mantissa alleviivataan (osa numeroista, joka muuttuu wxyz :ksi vaiheessa 2).

Esimerkki 1 666 10 = 0000`0010`1001`1010 2 Vaihe 1. Merkitse bitti s = 1: 0000`001 0`100 1`1010 2 Vaihe 2. Itse pakkaus (vastaa s001`wxyz): 1010`0100 2 Vaihe 3. Käänteinen: 1111`0001 2 = F1 16 = 241 10 . Esimerkki 2 -6666 10 = 1110`0101`1111`0110 2 Vaihe 1. Käännä numero, merkkibitti s = 0: 0001` 1010 `0000`1001 2 Vaihe 2. Itse pakkaus (vastaa s011`wxyz): 0101`1010 2 Vaihe 3. Käänteinen: 0000`1111 2 =15 10

Katso myös