Elias delta koodi

Elias delta -koodi  on Peter Eliasin kehittämä yleinen koodi positiivisten kokonaislukujen koodaamiseen.

Koodaus

Numeron N koodausalgoritmi:

  1. Count  - merkitsevien bittien määrä luvun binääriesityksessä .
  2. Count  - merkitsevien bittien määrä luvun binääriesityksessä .
  3. Kirjoita muistiin nollia ja yksi yksikkö.
  4. Liitä  - luvun binääriesityksen vähiten merkitsevät bitit ilman merkittävintä ( ).
  5. Liitä  - luvun binääriesityksen vähiten merkitsevät bitit ilman merkittävintä ( ).

Muuten tämä algoritmi voidaan kuvata seuraavasti:

  1. Count  - merkitsevien bittien määrä luvun binääriesityksessä .
  2. Koodaa Elias - gammakoodilla (γ(L)).
  3. Lisää luvun binääriesitys ilman alkulukua.

Eli sekä delta- että Elias-gammakoodissa luku on koodattu eksponenttiksi (luvun kapasiteetti - merkitsevien bittien määrä) ja mantissaksi (todella merkitseväksi bitiksi), mutta gammakoodissa eksponentti kirjoitetaan unaarimuoto , ja deltakoodissa siihen sovelletaan gammakoodausta uudelleen.

Esimerkki numeron 10 koodauksesta:

  1. Luvun binääriesityksessä on 4 merkitsevää bittiä ( ).
  2. Luvun binääriesityksessä on 3 merkitsevää bittiä ( ).
  3. Kirjoitamme nollan ja yhden yksikön → .001
  4. Lisätään luvun bitit ilman suurinta yksikköä → .00
  5. Lisätään luvun bitit ilman suurinta yksikköä → .010
  6. Tulos - 00100010.

Ensimmäisen 17 numeron koodauksen tulokset (vertailun vuoksi näytetään myös gammakoodi):

N L M delta koodi Pituus,
bitti
Arvioitu
todennäköisyys
gamma koodi Pituus,
bitti
γ(L)
yksi yksi yksi yksi yksi 1/2 yksi yksi
2 2 2 01 0 0 neljä 1/16 01 0 3
3 2 2 01 0 yksi neljä 1/16 01 yksi 3
neljä 3 2 01 1 00 5 1/32 001 00 5
5 3 2 01 1 01 5 1/32 001 01 5
6 3 2 01 1 kymmenen 5 1/32 001 kymmenen 5
7 3 2 01 1 yksitoista 5 1/32 001 yksitoista 5
kahdeksan neljä 3 001 00 000 kahdeksan 1/256 0001 000 7
9 neljä 3 001 00 001 kahdeksan 1/256 0001 001 7
kymmenen neljä 3 001 00 010 kahdeksan 1/256 0001 010 7
yksitoista neljä 3 001 00 011 kahdeksan 1/256 0001 011 7
12 neljä 3 001 00 100 kahdeksan 1/256 0001 100 7
13 neljä 3 001 00 101 kahdeksan 1/256 0001 101 7
neljätoista neljä 3 001 00 110 kahdeksan 1/256 0001 110 7
viisitoista neljä 3 001 00 111 kahdeksan 1/256 0001 111 7
16 5 3 001 01 0000 9 1/512 00001 0000 9
17 5 3 001 01 0001 9 1/512 00001 0001 9

Alkuperäisten arvojen lisäkäsittelyllä delta-koodia voidaan käyttää myös nolla- ja negatiivisten kokonaislukujen koodaamiseen (katso: Elias Gamma Code#Generalization ).

Dekoodaus

Algoritmi numeron dekoodaamiseksi Elias-deltakoodista:

  1. Count  - nollien määrä tulovirrassa ensimmäiseen nollia asti.
  2. Yhtä seuraa luvun vähiten merkitsevä bitti , lue ne ja lisää arvo tulokseen . Jos syöttövirran bitit kirjoitetaan korkeasta matalaan, niin ensimmäinen nollasarjan jälkeinen voidaan lukea osana luvun binääriesitystä , jolloin ei ole tarpeen lisätä erillisessä vaiheessa .
  3. Seuraavaksi tulevat luvun vähiten merkitsevät bitit , lue ne ja lisää arvo tulokseen .

Esimerkki bittisekvenssin 001010001 dekoodaamisesta :

  1. Lue virrasta 001 ja määritä, että alussa on 2 etunollaa ( ).
  2. Lue seuraavat bitit virrasta → 01 ; se antaa .
  3. Lue seuraavat bitit virrasta → 0001 ; se antaa .

Tehokkuus

Numeroilla 2, 3, 8…15 deltakoodi on pidempi kuin gammakoodi, numeroilla 1, 4…7, 16…31 deltakoodin pituus on sama kuin gammakoodin pituus, kaikilla muilla. numerot delta - koodi on lyhyempi kuin gamma - koodi . Näin ollen deltakoodi on sitä vähemmän kannattava kuin gammakoodi, mitä epätasaisempi koodattujen lukujen todennäköisyysjakauma ja sitä todennäköisemmin niiden arvot lähestyvät nollaa.

Katso myös

Kirjallisuus