Fibonacci Coding Article Index for
Fibonacci
Shopping
Coding
Website Links For
Fibonacci
 

Information About

Fibonacci Coding




In Mathematics , Fibonacci coding is a Universal Code which encodes positive integers into binary Code Word s. All tokens end with "11" and have no "11" before the end.

The formula used to generate Fibonacci codes is:
#N = \sum_{i=0}^k d(i) F(i)
#d(i) = 1 \Rightarrow d(i+1) = 0\,\!

where F(i) is the i-th Fibonacci number. No two adjacent coefficients d(i) can be 1.

The code begins as follows:

1 = F(1) 11
2 = F(2) 011
3 = F(3) 0011
4 = F(1)+F(3) 1011
5 = F(4) 00011
6 = F(1)+F(4) 10011
7 = F(2)+F(4) 01011
8 = F(5) 000011

The Fibonacci code is closely related to ''Fibonacci representation'', a positional Numeral System sometimes used by mathematicians. The Fibonacci code for a particular integer is exactly that of the integer's Fibonacci representation, except with the order of its digits reversed and an additional "1" appended to the end.

To encode an integer ''X'':
# Find the largest Fibonacci Number equal to or less than ''X''; subtract this number from ''X'', keeping track of the remainder.
# If the number we subtracted was the ''N''th unique Fibonacci number, put a one in the ''N''th digit of our output.
# Repeat the previous steps, substituting our remainder for ''X'', until we reach a remainder of 0.
# Place a one after the last naturally-occurring one in our output.

To decode a token in the code, remove the last "1", assign the remaining bits the values 1,2,3,5,8,13... (the Fibonacci Number s), and add the "1" bits.


COMPARISON WITH OTHER UNIVERSAL CODES


Fibonacci coding has a useful property that sometimes makes it attractive in comparison to other universal codes: it is easier to recover data from a damaged stream. With most other universal codes, if a single Bit is altered, none of the data that comes after it will be correctly read. With Fibonacci coding, on the other hand, a changed bit may cause one token to be read as two, or cause two tokens to be read incorrectly as one, but reading a "0" from the stream will stop the errors from propagating further. Since the only stream that has no "0" in it is a stream of "11" tokens, the total Edit Distance between a stream damaged by a single bit error and the original stream is at most three.


SEE ALSO