Šikmý binární číselný systém - Skew binary number system - Wikipedia

The zkosit binární číselný systém je nestandardní poziční číselný systém ve kterém nTato číslice přispívá hodnotou krát číslice (číslice jsou indexovány od 0) místo časy jako v binární. Každá číslice má hodnotu 0, 1 nebo 2. Všimněte si, že číslo může mít mnoho zkosených binárních reprezentací. Například desítkové číslo 15 lze zapsat jako 1000, 201 a 122. Každé číslo lze zapsat jedinečně v zkosené binární kanonické formě, kde existuje pouze nejvíce jedna instance číslice 2, kterou musí být nejméně významné nenulová číslice. V tomto případě je 15 psáno kanonicky jako 1000.

Příklady

Kanonická zkosená binární reprezentace čísel od 0 do 15 jsou uvedena v následující tabulce:[1]

DesetinnýŠikmý binárníbinární
000
111
2210
31011
411100
512101
620110
7100111
81011000
91021001
101101010
111111011
121121100
131201101
142001110
1510001111

Aritmetické operace

Výhodou zkoseného binárního souboru je, že každou operaci přírůstku lze provést maximálně jednou nést úkon. Toto využívá skutečnosti, že . Zvýšení binárního čísla zešikmení se provádí nastavením pouze dvou na nulu a zvýšením další číslice od nuly k jedné nebo od jedné ke dvěma. Když jsou čísla reprezentována pomocí formy kódování délky běhu jako spojené seznamy nenulových číslic lze inkrementaci a dekrementaci provádět v konstantním čase.

Další aritmetické operace lze provádět přepínáním mezi zkosenou binární reprezentací a binární reprezentací.[2]

Od šikmé binární reprezentace po binární reprezentaci

Vzhledem k šikmému binárnímu číslu lze jeho hodnotu vypočítat smyčkou, která vypočítá po sobě jdoucí hodnoty a přidat to jednou nebo dvakrát pro každého takové, že th číslice je 1 nebo 2 příslušně. Nyní je uvedena efektivnější metoda s pouze bitovou reprezentací a jedním odečtením.

Zkosené binární číslo formuláře bez 2 a s 1s se rovná binárnímu číslu mínus . Nechat představuje číslici opakoval krát. Zkosené binární číslo formuláře s 1s se rovná binárnímu číslu mínus .

Od binární reprezentace po zkosenou binární reprezentaci

Podobně jako v předchozí části binární číslo formuláře s 1 s se rovná zkosenému binárnímu číslu Plus . Všimněte si, že protože přidání není definováno, přidání odpovídá zvyšování počtu krát. Nicméně, je omezen logaritmem a přírůstek trvá konstantní čas. Proto transformace binárního čísla na zkosené binární číslo běží v čase lineárně v délce čísla.

Aplikace

Zkosená binární čísla byla vyvinuta Eugene Myers v roce 1983 čistě funkční datová struktura , který umožňuje provoz zásobník abstraktní datový typ a také umožňuje efektivní indexování do sekvence prvků zásobníku.[3] Později byly použity naklonit binomické hromady, varianta binomické hromady které podporují operace vkládání nejhorších případů v konstantním čase.[4]

Viz také

Poznámky

  1. ^ Sloane, N. J. A. (vyd.). „Sequence A169683“. The On-line encyklopedie celočíselných sekvencí. Nadace OEIS.
  2. ^ Elmasry, Amr; Jensen, Claus; Katajainen, Jyrki (2012). „Dva zkosené binární číselné systémy a jedna aplikace“ (PDF). Teorie výpočetních systémů. 50: 185–211. doi:10.1007 / s00224-011-9357-0.
  3. ^ Myers, Eugene W. (1983). "Aplikovatelný zásobník s náhodným přístupem". Dopisy o zpracování informací. 17 (5): 241–248. doi:10.1016/0020-0190(83)90106-0. PAN  0741239.
  4. ^ Brodal, Gerth Stølting; Okasaki, Chris (listopad 1996). "Optimální čistě funkční prioritní fronty". Journal of Functional Programming. 6 (6): 839–857. doi:10.1017 / s095679680000201x.