Content deleted Content added
m →Negafibonacci representation: "negafibonacci representation" redirects here |
|||
(10 intermediate revisions by 6 users not shown) | |||
Line 1:
In [[mathematics]], '''negafibonacci coding''' is a [[universal code (data compression)|universal code]] which encodes nonzero integers into binary [[Code word (communication)|code word]]s. It is similar to [[Fibonacci coding]], except that it allows both positive and negative integers to be represented. All codes end with "11" and have no "11" before the end.
== Encoding method ==
The following steps describe how to encode a nonzero integer <math> x </math>. Note that <math> f </math> denotes the Negafibonacci sequence.
# If <math> x </math> is positive, compute the greatest odd negative integer <math> n </math> such that the sum of the odd negative terms of the Negafibonacci sequence from −1 to <math> n </math> with a step of −2, is greater than or equal to <math> x </math>: <br /> <math> n \in \{ - \left( 2k + 1 \right) , k \in [0, \infty [ \} , \quad \sum_{i=-1, \; i \; odd}^{n-2} f(i) < x \leq \sum_{i=-1, \; i \; odd}^{n} f(i). </math> <br /> If <math> x </math> is negative, compute the greatest even negative integer <math> n </math> such that the sum of the even negative terms of the Negafibonacci sequence from 0 to <math> n </math> with a step of −2, is less than or equal to <math> x </math>: <br /> <math> n \in \{ - 2k , k \in [2, \infty [ \} , \quad \sum_{i=-2, \; i \; even}^{n-2} f(i) > x \geq \sum_{i=-2, \; i \; even}^{n} f(i) </math>
# Add a 1 at the <math> |n|^{\text{th}} </math> bit of the binary word. Subtract <math> f(n) </math> from <math> x </math>.
# Repeat the process from step 1 with the new value of ''x'', until it reaches 0.
# Add a 1 on the left of the resulting binary word to finish the encoding.
To decode an encoded binary word, remove the leftmost 1 from the binary word, since it is used only to denote the end of the encoded number. Then assign the remaining bits the values of the Negafibonacci sequence from −1 (1, −1, 2, −3, 5, −8, 13...), and sum the all the values associated with a 1.
== Negafibonacci representation ==
<!--[[Negafibonacci representation redirects here; please update the redirect if this section is retitled, split, or moved.-->
{{numeral systems}}
Line 79 ⟶ 80:
== References ==
{{No footnotes|date=
{{Reflist}}
Line 85 ⟶ 86:
{{Refbegin}}
* {{Cite conference |last=Knuth |first=Donald |year=2008 |title=Negafibonacci Numbers and the Hyperbolic Plane |conference=Annual meeting of the Mathematical Association of America |___location=San Jose, California}}
* {{Cite book |last=Knuth |first=Donald |title=[[The Art of Computer Programming]], Volume 4, Fascicle 1: Bitwise Tricks & Techniques; Binary Decision Diagrams |year=2009 |publisher=Addison-Wesley |isbn=978-0-321-58050-4}} In the [https://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz pre-publication draft of section 7.1.3] see in particular pp.
* {{Cite book |last=Margenstern |first=Maurice |url=https://books.google.com/books?id=eEgvfic3A4kC&pg=PA79 |title=Cellular Automata in Hyperbolic Spaces |publisher=Archives contemporaines |year=2008 |isbn=9782914610834 |series=Advances in unconventional computing and cellular automata |volume=2 |page=79}}
{{Refend}}
Line 95 ⟶ 96:
[[Category:Lossless compression algorithms]]
[[Category:Fibonacci numbers]]
[[Category:Data compression]]
[[fr:Codage de Fibonacci]]
|