Š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í |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 2 | 10 |
3 | 10 | 11 |
4 | 11 | 100 |
5 | 12 | 101 |
6 | 20 | 110 |
7 | 100 | 111 |
8 | 101 | 1000 |
9 | 102 | 1001 |
10 | 110 | 1010 |
11 | 111 | 1011 |
12 | 112 | 1100 |
13 | 120 | 1101 |
14 | 200 | 1110 |
15 | 1000 | 1111 |
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
- ^ Sloane, N. J. A. (vyd.). „Sequence A169683“. The On-line encyklopedie celočíselných sekvencí. Nadace OEIS.
- ^ 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.
- ^ 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.
- ^ 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.