Способ преобразования бинарного кода грея в двоичный код
Иллюстрации
Показать всеИзобретение относится к области цифровой вычислительной техники и может быть использовано в вычислительных и телеметрических системах для выполнения операций по переводу чисел, представленных в коде Грея, в двоичный код и построения преобразователей кода Грея. Техническим результатом является повышение быстродействия и надежности. Способ заключается в том, что число в коде Грея складывают по модулю 2 с этим же числом, сдвинутым на один (20) разряд вправо. Результирующее число складывают по модулю 2 с этим же числом, сдвинутым на два (21) разряда вправо. Последующую i-ю операцию сложения осуществляют с результатом, сдвинутым на (2i) разряда. Операции прекращают, когда очередной сдвиг приводит к обнулению числа.
Реферат
Настоящее изобретение относится к области цифровой вычислительной техники и может быть использовано в вычислительных и телеметрических системах для выполнения операций по переводу чисел, представленных в коде Грея, в двоичный код и построения преобразователей кода Грея.
Из существующего уровня техники известен способ перевода кода Грея в двоичный заключающийся в следующем: каждый разряд в позиционном двоичном коде равен сумме по модулю 2 этого и всех более старших разрядов в коде Грея. Старшие разряды, соответственно, совпадают (патент США №2632058 от 17 марта 1953 г., Кнут Дональд Э. Искусство программирования. Том 4. Выпуск 3. Генерация всех сочетаний и разбиений // Пер. с англ. - М.: ООО "И.Д. Вильямс", 2007. - 208 с., Robert W. Doran. The Gray Code. // Journal of Universal Computer Science. - 2007. - Vol. 13, №11. - P. 1573-1597).
Недостатками данного способа являются необходимость хранения исходного числа в коде Грея, накопления последовательно получаемых разрядов двоичного кода, выполнения операций не циклического сдвига и суммирования по модулю 2, столько раз, сколько разрядов в исходном числе минус один.
Задачей, на решение которой направлено заявляемое изобретение, является повышение быстродействия операции преобразования кода Грея в двоичный и снижение необходимых ресурсов (элементных и мощностных) вычислительных или телеметрических систем на указанную операцию.
Данная задача решается за счет того, что заявленный способ преобразования бинарного кода Грея в двоичный код заключается в том, что число в коде Грея складывают по модулю 2 с этим же числом, сдвинутым на один (20) разряд вправо (нециклический сдвиг). Результирующее число складывают по модулю 2 с этим же числом, сдвинутым на два (21) разряда вправо, затем следующее сложение осуществляют с результатом, сдвинутым на четыре (22) разряда вправо и т.д. Операции сложения прекращают, когда очередной сдвиг вправо приводит к обнулению числа. Результат последнего сложения представляет собой искомое число в двоичном коде.
Число суммирований по модулю 2 до получения двоичного кода определяют показателем степени числа 2, которое будучи возведенным в эту степень даст число разрядов преобразуемого числа.
Техническим результатом, обеспечиваемым приведенной совокупностью признаков, является увеличение быстродействия и надежности работы устройств преобразования чисел в коде Грея в двоичные числа за счет уменьшения количества необходимых операций сложения по модулю 2. Так, для 4-х разрядных чисел описанную процедуру необходимо проделать дважды, для 8-разрядных - трижды, для 16-разрядных - четырежды и т.д. Таким образом, чем больше разрядность чисел, тем эффективнее предлагаемый способ. Числа отличной от стандартной разрядности могут быть дополнены, при необходимости, нулями в старших разрядах до ближайшей из них. Кроме того, отпадает необходимость в регистре хранения исходного числа в коде Грея и накоплении последовательно получаемых разрядов двоичного кода - после последнего сложения число в двоичном коде представлено целиком.
Способ преобразования чисел в коде Грея в двоичные числа осуществляется на устройстве, позволяющем проводить не циклический сдвиг чисел и суммирование по модулю 2. Способ заключается в следующем:
1) осуществляют не циклический сдвиг исходного числа в коде Грея на один (20) разряд вправо и складывают по модулю 2 с исходным числом;
2) полученное результирующее число сдвигают на два (21) разряда вправо и складывают по модулю 2 с результатом предыдущего сложения;
3) результат предыдущей операции сдвигают на четыре (22) разряда вправо и складывают по модулю 2 с результатом предыдущего сложения;
4) очередное сложение результата предыдущей операции осуществляют с этим же числом, сдвинутым на количество разрядов, определяемое геометрической прогрессией 2n-1, где n - номер шага сложения. Операции прекращают, когда очередной сдвиг приводит к обнулению числа. Результат последнего сложения представляет собой искомое число в двоичном коде.
Имеется конкретный пример предлагаемого изобретения:
перевод 8-разрядного числа в коде Грея в двоичное число известным способом:
Перевод 8-разрядного числа в коде Грея в двоичное число предлагаемым способом:
Перевод 16-разрядного числа в коде Грея в двоичное число предлагаемым способом:
Таким образом, предлагаемое изобретение позволяет увеличить быстродействие и надежность работы устройств преобразования чисел в коде Грея в двоичные числа за счет уменьшения количества необходимых операций сложения по модулю 2. При этом, чем больше разрядность чисел, тем эффективнее предлагаемый способ в сравнении с существующим. Кроме того, отпадает необходимость в хранении исходного числа в коде Грея и накоплении последовательно получаемых разрядов двоичного кода.
Способ преобразования бинарного кода Грея в двоичный код, заключающийся в том, что число в коде Грея складывают по модулю два с этим же числом, сдвинутым на один разряд вправо; число, получившееся в результате сложения, складывают по модулю два с этим же числом, сдвинутым на два разряда вправо; последующее сложение результата предыдущей операции осуществляют с этим же числом, сдвинутым вправо на количество разрядов, определяемое геометрической прогрессией 2n-1, где n - номер шага сложения; операцию сложения прекращают, когда очередной сдвиг приводит к обнулению числа; результат последнего сложения представляет собой искомое число в двоичном коде.