Skew binary number system

The skew binary number system is a non-standard positional numeral system in which the "n"th digit contributes a value of formula_1 times the digit (digits are indexed from 0) instead of formula_2 times as they do in binary. Each digit has a value of 0, 1, or 2. A number can have many skew binary representations. For example, a decimal number 15 can be written as 1000, 201 and 122. Each number can be written uniquely in skew binary canonical form where there is only at most one instance of the digit 2, which must be the least significant nonzero digit. In this case 15 is written canonically as 1000.
Examples.
Canonical skew binary representations of the numbers from 0 to 15 are shown in following table:
Arithmetical operations.
The advantage of skew binary is that each increment operation can be done with at most one carry operation. This exploits the fact that formula_3. Incrementing a skew binary number is done by setting the only two to a zero and incrementing the next digit from zero to one or one to two. When numbers are represented using a form of run-length encoding as linked lists of the non-zero digits, incrementation and decrementation can be performed in constant time.
Other arithmetic operations may be performed by switching between the skew binary representation and the binary representation.
From skew binary representation to binary representation.
Given a skew binary number, its value can be computed by a loop, computing the successive values of formula_4 and adding it once or twice for each formula_5 such that the formula_5th digit is 1 or 2 respectively. A more efficient method is now given, with only bit representation and one subtraction.
The skew binary number of the form formula_7 without 2 and with formula_8 1s is equal to the binary number formula_9 minus formula_8. Let formula_11 represents the digit formula_12 repeated formula_13 times. The skew binary number of the form formula_14 with formula_8 1s is equal to the binary number formula_16 minus formula_8.
From binary representation to skew binary representation.
Similarly to the preceding section, the binary number formula_18 of the form formula_7 with formula_8 1s equals the skew binary number formula_21 plus formula_8. Note that since addition is not defined, adding formula_8 corresponds to incrementing the number formula_8 times. However, formula_8 is bounded by the logarithm of formula_18 and incrementation takes constant time. Hence transforming a binary number into a skew binary number runs in time linear in the length of the number.
Applications.
The skew binary numbers were developed by Eugene Myers in 1983 for a purely functional data structure that allows the operations of the stack abstract data type and also allows efficient indexing into the sequence of stack elements. They were later applied to skew binomial heaps, a variant of binomial heaps that support constant-time worst-case insertion operations.