Несмежная форма - Non-adjacent form
Системы счисления |
---|
Индусско-арабская система счисления |
Восточная Азия |
Европейский |
Американец |
По алфавиту |
Бывший |
Позиционные системы к основание |
Нестандартные позиционные системы счисления |
Список систем счисления |
В несмежная форма (NAF) числа является уникальным представление цифр со знаком, в котором ненулевые значения не могут быть смежными. Например:
- (0 1 1 1)2 = 4 + 2 + 1 = 7
- (1 0 −1 1)2 = 8 − 2 + 1 = 7
- (1 −1 1 1)2 = 8 − 4 + 2 + 1 = 7
- (1 0 0 −1)2 = 8 − 1 = 7
Все являются действительными знаковыми цифрами представления 7, но только окончательное представление, (1 0 0 -1)2, находится в несмежной форме.
Характеристики
NAF обеспечивает уникальное представление целое число, но главное преимущество в том, что Вес Хэмминга от стоимости будет минимальным. Для обычных двоичный представления ценностей, половина всех биты в среднем будет отличаться от нуля, но с NAF это число упадет до одной трети всех цифр.
Очевидно, что не более половины цифр не равны нулю, поэтому он был введен Г.В. Reitweisner [1] для ускорения алгоритмов раннего умножения, как и Кодирование будки.
Поскольку каждая ненулевая цифра должна быть смежной с двумя нулями, представление NAF может быть реализовано таким образом, чтобы оно занимало максимум м +1 бит для значения, которое обычно представляется в двоичном виде с м биты.
Свойства NAF делают его полезным в различных алгоритмах, особенно в некоторых из них. криптография; например, для уменьшения количества умножений, необходимых для выполнения возведение в степень. В алгоритме возведение в степень возведением в квадрат, количество умножений зависит от количества ненулевых битов. Если показатель здесь задан в форме NAF, цифровое значение 1 подразумевает умножение на основание, а цифровое значение -1 на его обратное.
Другие способы кодирования целых чисел, которые избегают последовательных единиц, включают Кодирование будки и Кодирование Фибоначчи.
Преобразование в NAF
Существует несколько алгоритмов для получения представления NAF значения, заданного в двоичном формате. Одним из таких способов является следующий метод с повторным делением; он работает, выбирая ненулевые коэффициенты, так что результирующее частное делится на 2 и, следовательно, следующий коэффициент равен нулю.[2]
Вход E = (ем−1 ем−2 ··· е1 е0)2 Выход Z = (zм zм−1 ··· z1 z0)NAF я ← 0 пока E > 0 делать, если E странно тогда zя ← 2 − (E мод 4) E ← E − zя еще zя ← 0 E ← E/2 я ← я + 1 возврат z