кодирование | декодирование | визуализация

> Грей | отражённый | двоичный <

// Код Грея — двоичная система счисления, в которой соседние значения отличаются только одним битом

0 символов
0 символов
[SINGLE-BIT]

Единичное расстояние

Между соседними значениями изменяется только один бит.

[ERROR-REDUCTION]

Снижение ошибок

Уменьшает ошибки при аналого‑цифровом преобразовании.

[CYCLIC]

Циклическое свойство

Первое и последнее значение также отличаются лишь одним битом.

>> техническая информация

Как работает код Грея:

Код Грея (отражённый двоичный код) — это система двоичного кодирования, в которой два соседних значения отличаются только одним битом. Он формируется с помощью операции XOR между каждым разрядом и предыдущим. Такая структура делает его удобным для датчиков положения и уменьшения ошибок в цифровых устройствах.

Примеры кода Грея:

Десятичное | Бинарное | Код Грея
0          | 0000     | 0000
1          | 0001     | 0001
2          | 0010     | 0011
3          | 0011     | 0010
4          | 0100     | 0110
5          | 0101     | 0111
6          | 0110     | 0101
7          | 0111     | 0100

Примечание: между соседними кодами Грея изменяется только 1 бит

Зачем использовать код Грея:

  • ▸Роторные энкодеры
  • ▸Карты Карно (Karnaugh maps)
  • ▸Коррекция ошибок
  • ▸Цифровая связь
  • ▸Датчики положения

>> часто задаваемые вопросы

Что такое код Грея?

Код Грея, или отражённый двоичный код, — это способ кодирования чисел, при котором два последовательных значения отличаются друг от друга лишь одним битом. Он широко применяется в цифровой технике, чтобы избежать ошибочных показаний во время переключений.

Как перевести двоичный код в код Грея?

Чтобы получить код Грея из двоичного числа: 1) оставьте старший бит (MSB) без изменений, 2) для каждого следующего бита выполните операцию XOR с предыдущим. Формула: G[i] = B[i] XOR B[i-1]. Например, двоичное 1011 переходит в код Грея 1110.

Почему код Грея лучше подходит для энкодеров?

В обычном двоичном коде при переходе между значениями может изменяться сразу несколько бит, что приводит к появлению ложных промежуточных состояний. Код Грея гарантирует изменение только одного бита за шаг, поэтому показания с энкодеров становятся более надёжными.

Где используется код Грея?

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

// Краткий справочник

DecBinaryGray
0000000
1001001
2010011
3011010
4100110
5101111
6110101
7111100

// Примеры кода

Binary -> Gray   g = b ^ (b >> 1)
Gray -> Binary   b = g; for (m = g >> 1; m; m >>= 1) b ^= m;
Python           def to_gray(n): return n ^ (n >> 1)
                 def from_gray(g):
                     n = 0
                     while g: n ^= g; g >>= 1
                     return n
n bits           2^n codes, successive codes differ by exactly 1 bit (also 2^n - 1 -> 0)

>> Другие вопросы

В: Что такое код Грея?

О: Код Грея (отражённый двоичный код) — представление чисел, при котором соседние значения отличаются ровно одним битом. Запатентован Фрэнком Греем в Bell Labs и цикличен: последнее значение тоже отличается от первого одним битом.

В: Почему его используют в энкодерах?

О: В обычном двоичном коде при переходе, например, 011 → 100 меняются сразу несколько битов. Если датчики срабатывают не идеально синхронно, на миг возникают ложные значения. В коде Грея меняется один бит, и ошибка не больше одной позиции.

В: Как перевести код Грея в двоичный?

О: Старший бит остаётся, каждый следующий двоичный бит равен предыдущему двоичному биту XOR текущему биту Грея. Формулой: b = g ^ (g >> 1) ^ (g >> 2) ^ …. Из двоичного в Грея: g = b ^ (b >> 1).

Другие языки