Изменения

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

Коды Грея

785 байт добавлено, 15:54, 14 января 2015
Явная формула для получения зеркального двоичного кода Грея
Для кода длиной <tex>1</tex> бит утверждение проверяется непосредственно.
Пусть существует зеркальный двоичный код Грея <tex>M</tex> длины <tex>n</tex>, для которого выполнено, что для любого <tex>i </tex> выполняется <tex>е\enskip M_i = i \oplus (\lfloor i / 2 \rfloor)</tex>
Обозначим за <tex>L</tex> код длины <tex>n + 1</tex>, полученный из <tex>M</tex> описанным выше алгоритмом. Тогда:
Для любого <tex>x < 2^n \enskip L_x = 0</tex> выполняется <tex>M_x = 0(x_{n-1}x_{n-2}...x_{0} \oplus 0x_{n-1}x_{n-2}...x_{1}) =</tex><tex> 0x_{n-1}x_{n-2}...x_{0} \oplus 00x_{n-1}x_{n-2}...x_{1} enskip L_x = x \oplus (\lfloor x / 2 \rfloor)0M_x</tex>и, по условию, равно
Для любого <tex>x L_x = 0(x_{n-1}x_{n-2}...x_{0} \geq oplus 0x_{n-1}x_{n-2^n \enskip L_x = }...x_{1})</tex> <tex>M_y</tex>раскрыв скобки, где получим новое выражение <tex>y = 2^{n+1} - 1 - x = \neg xL_x</tex>, то есть :
<tex>L_x = 1(\overline {x_0x_{n-1} x_{n-2}... x_{0}} \oplus 0 \overline {x_00x_{n-1} x_{n-2}... x_{1}}) =</tex><tex> 1что равно (\overline {x_{n-1}}x_{n-2}второе слагаемое равно первому, побитово сдвинутого вправо...x_{0} \oplus 0x_{n-1}x_{n-2}...x_{1}) =</tex>
<tex>= x \oplus (\lfloor x / 2 \rfloor)</tex>  Для любого <tex>x \geq 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}...x_{0} } \oplus 0 \overline {x_{n-1} x_{n-2}... x_{1}})</tex> что по свойству '''xor''' (<tex>\neg x \oplus 1x_\neg y = x \oplus y</tex>) равно <tex>= 1(\overline {x_{n-1}}x_{n-2}...x_{0} \oplus 0x_{n-1}x_{n-2}...x_{1}) </tex> или (все по тому же свойству) <tex>= 1(x_{n-1}x_{n-2}...x_{0} \oplus 1x_{n-1}x_{n-2}...x_{01})</tex>раскрыв скобки, получим <tex> = 1x_{n-1}x_{n-2}...x_{0} \oplus 01x_{n-1}x_{n-2}...x_{1} </tex> откуда получаем, зная из условия, что старший разряд <tex>L_x</tex> равен <tex>1</tex> <tex>= x_{n}x_{n-1}x_{n-2}...x_{0} \oplus 0x_{n}x_{n-1}x_{n-2}...x_{1} =</tex>что, аналогично первому пункту, равно <tex> = x \oplus (\lfloor x / 2 \rfloor)</tex>
Таким образом, шаг индукции доказан, следовательно, теорема верна.
Анонимный участник

Навигация