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