Изменения

Перейти к: навигация, поиск

Коды Грея

6 байт добавлено, 21:03, 14 января 2015
Нет описания правки
{| border="0"
|align="left" colspan="4"|
*<tex>\mathtt{GrayCode}</tex> {{---}} двумерный массив типа '''boolean''', в котором <tex>\mathtt{GrayCode[a, b]}</tex> {{---}} <tex>b</tex>-ый бит в <tex>a</tex>-ом коде Грея.
*<tex>\mathtt{p}</tex> {{---}} Счетчик количества уже имеющихся кодов
*<tex>\mathtt{t}</tex> {{---}} Показывает количество кодов в <tex>(a-1)</tex>-м коде Грея
<code>
buildCode(n):
GrayCode[1, n] = '''false''' GrayCode[2, n] = '''true''' <font color=green> // Построение кода длины 1 </font>
p = 2
'''for''' i = 2 '''to''' n
'''for''' k = (p / 2 + 1) '''to''' p
GrayCode[k] = GrayCode[t] <font color=green> // Отражение имеющихся кодов </font>
GrayCode[t, n + 1 - i] = '''false''' GrayCode[k, n + 1 - i] = '''true''' <font color=green> // Добавление 0 и 1 в начало </font>
t--
'''return(''' GrayCode)
</code>
|}
<tex>= x \oplus (\lfloor x / 2 \rfloor)</tex>
Для любого <tex>x \leqslant geqslant 2^n</tex> выполняется <tex>\enskip L_x = 1</tex><tex>M_y</tex>, где <tex>y = 2^{n+1} - 1 - x = \neg x</tex>, то есть
<tex>L_x = 1(\overline {x_{n-1} x_{n-2} \dots x_{0}} \oplus 0 \overline {x_{n-1} x_{n-2} \dots x_{1}})</tex> что по свойству '''xor''' (<tex>\neg x \oplus \neg y = x \oplus y</tex>) равно
317
правок

Навигация