Negafibonacci-kodning
I matematik är negafibonacci-kodning en universell kod som kodar heltal som inte är noll till binära kodord . Det liknar Fibonacci-kodning , förutom att det tillåter att både positiva och negativa heltal representeras. Alla koder slutar med "11" och har ingen "11" före slutet.
Kodningsmetod
Så här kodar du ett heltal som inte är noll :
- Beräkna det största (eller minsta) kodningsbara talet med N bitar genom att summera de udda (eller jämna) negafibonaccitalen från 1 till N .
- När det har fastställts att N bitar är precis tillräckligt för att innehålla X , subtrahera det N:te negafibonacci-talet från X , håll reda på resten, och sätt en etta i den N:te biten av utdata.
- Arbeta nedåt från den N:e biten till den första, jämför vart och ett av de motsvarande negafibonacci-talen med resten. Subtrahera det från resten om det absoluta värdet av skillnaden är mindre, OCH om nästa högre bit inte redan har en etta i sig. En etta placeras i lämplig bit om subtraktionen görs, eller en nolla om inte.
- Lägg en etta i N+1: e biten för att avsluta.
För att avkoda en token i koden, ta bort den sista "1", tilldela de återstående bitarna värdena 1, −1, 2, −3, 5, −8, 13... (negafibonacci-talen), och lägg till " 1" bitar.
Negafibonacci representation
Del av en serie om |
siffersystem |
---|
Lista över siffersystem |
Negafibonacci-kodning är nära släkt med negafibonacci-representation , ett positionsnummersystem som ibland används av matematiker. Negafibonacci-koden för ett visst heltal som inte är noll är exakt koden för heltalets negafibonacci-representation, förutom med omvänd ordning på dess siffror och ytterligare en "1" tillagd i slutet. Negafibonacci-koden för alla negativa tal har ett udda antal siffror, medan de för alla positiva tal har ett jämnt antal siffror.
Tabell
Koden för heltal från −11 till 11 ges nedan.
siffra | Negafibonacci representation | Negafibonacci kod |
---|---|---|
−11 | 101 000 | 0001011 |
−10 | 101001 | 1001011 |
−9 | 100010 | 0100011 |
−8 | 100 000 | 0000011 |
−7 | 100001 | 1000011 |
−6 | 100100 | 0010011 |
−5 | 100101 | 1010011 |
−4 | 1010 | 01011 |
−3 | 1000 | 00011 |
−2 | 1001 | 10011 |
−1 | 10 | 011 |
0 | 0 | (kan inte kodas) |
1 | 1 | 11 |
2 | 100 | 0011 |
3 | 101 | 1011 |
4 | 10010 | 010011 |
5 | 10 000 | 000011 |
6 | 10001 | 100011 |
7 | 10100 | 001011 |
8 | 10101 | 101011 |
9 | 1001010 | 01010011 |
10 | 1001000 | 00010011 |
11 | 1001001 | 10010011 |
Se även
Anförda verk
- Knuth, Donald (2008). Negafibonacci-tal och det hyperboliska planet . Årsmöte för Mathematical Association of America. San Jose, Kalifornien.
- Knuth, Donald (2009). The Art of Computer Programming , Volym 4, Fascicle 1: Bitwise Tricks & Techniques; Binära beslutsdiagram . ISBN 978-0-321-58050-4 . I förpubliceringsutkastet till avsnitt 7.1.3 se särskilt s. 36–39.
- Margenstern, Maurice (2008). Cellulära automater i hyperboliska utrymmen . Framsteg inom okonventionella datorer och cellulära automater. Vol. 2. Arkiverar samtida. sid. 79. ISBN 9782914610834 .