NegaFibonacci kódování - NegaFibonacci coding
![]() | tento článek potřebuje další citace pro ověření.Ledna 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Číselné soustavy |
---|
![]() |
Hindu-arabská číselná soustava |
východní Asiat |
evropský |
americký |
Abecední |
Bývalý |
Poziční systémy podle základna |
Nestandardní poziční číselné systémy |
Seznam číselných soustav |
v matematika, kódování negaFibonacci je univerzální kód který kóduje nenulová celá čísla do binárních kódová slova. Je to podobné jako Fibonacciho kódování, až na to, že umožňuje reprezentaci kladných i záporných celých čísel. Všechny kódy končí na „11“ a před koncem nemají „11“.
Fibonacciho kód úzce souvisí s negaFibonacciho zastoupení, poziční číselná soustava někdy používají matematici. Kód negaFibonacci pro konkrétní nenulové celé číslo je přesně ten, jaký má celočíselná negaFibonacciho reprezentace, s výjimkou obráceného pořadí jeho číslic a na konec připojené další „1“. Kód negaFibonacci pro všechna záporná čísla má lichý počet číslic, zatímco čísla všech kladných čísel mají sudý počet číslic.
Metoda kódování
Chcete-li kódovat nenulové celé číslo X:
- Vypočítejte největší (nebo nejmenší) kódovatelné číslo pomocí N bity součtem lichých (nebo sudých) negafibonacci čísla od 1 do N.
- Když se zjistí, že N bitů je dost na to, aby obsahoval X, odečíst Nth číslo negaFibonacci z X, sledujte zbytek a vložte jeden do Nth bit výstupu.
- Práce dolů z Nth bit k prvnímu, porovnejte každé z odpovídajících čísel negaFibonacci se zbytkem. Odečtěte jej od zbytku, pokud je absolutní hodnota rozdílu menší, A pokud další vyšší bit již v sobě žádný nemá. Jeden se umístí do příslušného bitu, pokud se odečte, nebo nula, pokud ne.
- Vložte jeden do N + 1 trochu do konce.
Chcete-li dekódovat token v kódu, odeberte poslední „1“, zbývajícím bitům přiřaďte hodnoty 1, −1, 2, −3, 5, −8, 13… ( negafibonacci čísla) a přidejte bity „1“.
Stůl
Níže je uveden kód celých čísel od -11 do 11.
číslo | negaFibonacciho zastoupení | kód negaFibonacci |
---|---|---|
−11 | 101000 | 0001011 |
−10 | 101001 | 1001011 |
−9 | 100010 | 0100011 |
−8 | 100000 | 0000011 |
−7 | 100001 | 1000011 |
−6 | 100100 | 0010011 |
−5 | 100101 | 1010011 |
−4 | 1010 | 01011 |
−3 | 1000 | 00011 |
−2 | 1001 | 10011 |
−1 | 10 | 011 |
0 | 0 | (nelze kódovat) |
1 | 1 | 11 |
2 | 100 | 0011 |
3 | 101 | 1011 |
4 | 10010 | 010011 |
5 | 10000 | 000011 |
6 | 10001 | 100011 |
7 | 10100 | 001011 |
8 | 10101 | 101011 |
9 | 1001010 | 01010011 |
10 | 1001000 | 00010011 |
11 | 1001001 | 10010011 |
Viz také
Reference
- Knuth, Donald (2008), Negafibonacciho čísla a hyperbolická rovina„Papír prezentovaný na výročním zasedání Americké matematické asociace v San Jose v Kalifornii.
- Knuth, Donald (2009), Umění počítačového programování, Volume 4, Fascicle 1: Bitwise Tricks & Techniques; Binární rozhodovací diagramy, ISBN 0-321-58050-8. V předběžný návrh oddílu 7.1.3 viz zejména s. 36–39.
- Margenstern, Maurice (2008), Mobilní automaty v hyperbolických prostorech Pokroky v nekonvenčních počítačích a celulárních automatech, 2, Archives contemporaines, s. 79, ISBN 9782914610834.