Косая двоичная система счисления - Skew binary number system - Wikipedia

В косая двоичная система счисления это нестандартная позиционная система счисления в которой п-я цифра дает значение умноженное на цифру (цифры индексируются от 0) вместо раз, как они делают в двоичный. Каждая цифра имеет значение 0, 1 или 2. Обратите внимание, что число может иметь много искаженных двоичных представлений. Например, десятичное число 15 может быть записано как 1000, 201 и 122. Каждое число может быть записано уникальным образом в канонической асимметричной двоичной форме, где есть только в большинстве один экземпляр цифры 2, который должен быть наименее значимый ненулевая цифра. В этом случае 15 канонически записывается как 1000.

Примеры

Канонические косые двоичные представления чисел от 0 до 15 показаны в следующей таблице:[1]

ДесятичныйИскаженный двоичный файлдвоичный
000
111
2210
31011
411100
512101
620110
7100111
81011000
91021001
101101010
111111011
121121100
131201101
142001110
1510001111

Арифметические операции

Преимущество асимметричного двоичного файла заключается в том, что каждая операция приращения может выполняться не более чем с одним нести операция. Это использует тот факт, что . Увеличение двоичного числа с перекосом осуществляется путем установки единственного двойного числа на ноль и увеличения следующей цифры от нуля до единицы или от единицы до двух. Когда числа представлены в форме кодирование длин серий поскольку связанные списки ненулевых цифр, увеличение и уменьшение могут выполняться за постоянное время.

Другие арифметические операции могут выполняться путем переключения между искаженным двоичным представлением и двоичным представлением.[2]

От перекоса двоичного представления к двоичному представлению

Учитывая косое двоичное число, его значение может быть вычислено с помощью цикла, вычисляя последовательные значения и добавляя его один или два раза для каждого так что -я цифра - 1 или 2 соответственно. Теперь дается более эффективный метод, только с битовым представлением и одним вычитанием.

Косое двоичное число вида без 2 и с 1s равно двоичному числу минус . Позволять представляет цифру повторяется раз. Косое двоичное число вида с 1s равно двоичному числу минус .

От двоичного представления к перекосу двоичного представления

Как и в предыдущем разделе, двоичное число формы с 1s равно наклонному двоичному числу плюс . Обратите внимание: поскольку сложение не определено, добавление соответствует увеличению числа раз. Тем не мение, ограничено логарифмом и приращение занимает постоянное время. Следовательно, преобразование двоичного числа в искаженное двоичное число происходит во времени линейно по длине числа.

Приложения

Косые двоичные числа были разработаны Юджин Майерс в 1983 г. чисто функциональная структура данных что позволяет работать стек абстрактный тип данных а также позволяет эффективно индексировать последовательность элементов стека.[3] Позже они были применены к косые биномиальные кучи, вариант биномиальные кучи которые поддерживают операции вставки в наихудшем случае с постоянным временем.[4]

Смотрите также

Примечания

  1. ^ Слоан, Н. Дж. А. (ред.). «Последовательность A169683». В Он-лайн энциклопедия целочисленных последовательностей. Фонд OEIS.
  2. ^ Элмасри, Амр; Дженсен, Клаус; Катаянен, Юрки (2012). «Две косо-двоичные системы счисления и одно приложение» (PDF). Теория вычислительных систем. 50: 185–211. Дои:10.1007 / s00224-011-9357-0.
  3. ^ Майерс, Юджин В. (1983). «Аппликативный стек произвольного доступа». Письма об обработке информации. 17 (5): 241–248. Дои:10.1016/0020-0190(83)90106-0. МИСТЕР  0741239.
  4. ^ Бродал, Герт Стёльтинг; Окасаки, Крис (ноябрь 1996 г.). «Оптимальные чисто функциональные приоритетные очереди». Журнал функционального программирования. 6 (6): 839–857. Дои:10.1017 / s095679680000201x.