Системы счисления: код Грея
Схема кодирования чисел (система счисления) как совокупность символов и правил их комбинации для обозначения числа, ее типы и формы реализации. Код Грея как непозиционный код с одним набором символов (0 и 1) для каждого разряда, принципы формирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 23.02.2012 |
Размер файла | 21,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Системы счисления: код Грея
Введение
Известно множество схем кодирования чисел (систем счисления) - совокупностей символов и правил их комбинации для обозначения числа. Основной признак, по которому все системы разделяют - позиционная ли это система. В свою очередь, позиционные системы различаются «весами», соответствующими каждой позиции в представлении числа. В одних системах вес цифры каждого разряда меньше веса цифры следующего старшего разряда в одно и тоже число раз. В других системах для каждого разряда определён свой вес, который может быть равен, больше или меньше весов других разрядов в произвольное число раз.
К позиционным системам с постоянным основанием относится десятичная система, системой с произвольным основанием является система счёта времени - секунд в минутах и минут в часах по 60, а часов в сутках 24. Непозиционные системы счисления из повседневности практически вытеснены, хотя римская система до сих пор используется, например, для указания номера века, а иногда и года.
В современных цифровых компьютерах основное место занимает двоичная система счисления (позиционная система с постоянным основанием, равным 2) и прямые её производные (восьмеричная и шестнадцатиричная системы). Однако и другие системы не были забыты. Например, при двоично-десятичном кодировании чисел каждой десятичной цифре отводится по четыре двоичных цифры (бита), веса которых могут быть равны не только 8-4-2-1, но и, скажем, 2-4-2-1.
Встречаются в цифровой технике и непозиционные системы. Наиболее известныйиз них - код Грея, называемый также рефлексным (отражённым) двоичным кодом. Кодов с такой же характеристикой много, но для кода Грея имеется простой алгоритм перевода чисел в двоичный позиционный код и обратно.
Строение кода Грея
Код Грея - непозиционный код с одним набором символов (0 и 1) для каждого разряда. Таким образом, в отличие от римской системы счисления число в коде Грея не является суммой цифр. Чтобы показать соответствие последовательности чисел коду Грея можно воспользоваться таблицей, но есть и наглядное правило построения этой последовательности.
Младший разряд в последовательности чисел в коде Грея принимает значения 0 и 1, затем следующий старший разряд становится единичным и младший разряд принимает свои значения уже в обратном порядке (1, 0). Этим и объясняется название кода - «отражённый». Соответственно, два младших разряда принимают значения 00, 01, 11, 10, а затем, при единичном следующем старшем разряде, те же значения в обратном порядке (10, 11, 01, 00). Ниже дана таблица, показывающая первые восемь чисел в двоичном коде и в коде Грея.
N |
двоичный код |
код Грея |
N |
двоичный код |
код Грея |
|
0 |
000 |
000 |
4 |
100 |
110 |
|
1 |
001 |
001 |
5 |
101 |
111 |
|
2 |
010 |
011 |
6 |
110 |
101 |
|
3 |
011 |
010 |
7 |
111 |
100 |
Использование кода Грея
Благодаря своему основному свойству (отличие соседних чисел только в одном разряде) код Грея применяется, например, в построенных на кодовых дисках определителях углового положения вала. В оптическом кодовом диске единицы и нули кодируются прозрачными и непрозрачными областями. С одной стороны диск просвечивается ориентированной вдоль его радиуса световой щелью, с другой стороны размещаются фотодиоды. Считываемый с фотодиодов двоичный код и указывает угол поворота диска. Ниже показаны 3-разрядные диски на позиционном коде и коде Грея (в силу ограниченности выразительных средств диски «разрезаны» посредине последнего угла и «вытянуты» в ленту, как это делается и для карт земного шара):
позиционный код |
||
код Грея |
Недостаток кодирования позиционным двоичным кодом заключается в том, что при смене нечётного кода чётным считанный с фотодиода код может оказаться неверным. Характеристики фотодиодов обычно не идентичны и при смене сразу нескольких разрядов выходные уровни фотодиодов могут измениться не строго одновременно. Например, при переходе от третьего угла к четвёртому или от седьмого угла к нулевому меняются все разряды и какое-то время на выходе фотодиодов можно получить любое значение от 0 до 7. В коде же Грея при переходах ошибка не будет превышать один угол.
Алгоритмы преобразования кода Грея
Как сказано выше, алгоритм перевода чисел в коде Грея в позиционный код прост: каждый разряд в позиционном коде равен сумме по модулю 2 этого и всех более старших разрядов в коде Грея. Старшие разряды, соответственно, совпадают. На языке C это алгоритм может выглядеть так:
unsigned gray2bin (unsigned v) {
unsigned sum = v, length = BITS;
while (length > 0) v >>= 1, sum ^= v, length -;
return sum;
}
Этот код является дословным переводом на язык C основного алгоритма, но его можно оптимизировать за счёт накопления промежуточных сумм в самом числе:
for (unsigned i = 1; i < BITS; i <<= 1) v ^= (v >> i);
Поскольку количество итераций здесь является уже логарифмом от числа бит и мало даже для очень больших чисел, то этот цикл лучше развернуть:
v ^= v >> 1; /* для 2-разрядных чисел */
v ^= v >> 2; /* для 4-разрядных чисел */
v ^= v >> 4; /* для 8-разрядных чисел */
v ^= v >> 8; /* для 16-разрядных чисел */
…
Перевод из позиционного кода в код Грея ещё проще: каждый разряд в коде Грея равен сумме по модулю 2 этого и следующего старшего разряда в позиционном коде. На языке C этот алгоритм реализуется выражением v^(v>>1). Реализации на языке C этих алгоритмов также представлены в отдельном файле [GRAY.C].
Заметьте: код Грея отличается от позиционного кода только интерпретацией значения бит в числе, поэтому числа в разных кодах можно хранить в одних и тех же переменных. Более того, одно и то же значение переменной также можно интерпретировать по-разному - это просто даст разные числа.
Литература
счисление цифра код грей
1. И.С. Потёмкин «Функциональные узлы цифровой автоматики», М.: Энергоатомиздат, 1988
Размещено на Allbest.ru
Подобные документы
Двоичный код, особенности кодирования и декодирования информации. Система счисления как совокупность правил записи чисел с помощью определенного набора символов. Классификация систем счисления, специфика перевода чисел в позиционной системе счисления.
презентация [16,3 K], добавлен 07.06.2011Общее представление о системах счисления. Перевод чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. Разбивка чисел на тройки и четверки цифр. Разряды символов числа. Перевод из шестнадцатеричной системы счисления в десятичную.
практическая работа [15,5 K], добавлен 19.04.2011Система счисления как совокупность приемов и правил, позволяющих установить взаимно-однозначное соответствие между любым числом и его представлением в виде конечного числа символов. Ее типы и формы, особенности использования в работе с компьютером.
презентация [212,5 K], добавлен 19.10.2014Система счисления как способ записи (изображения) чисел. История появления и развития различных систем счисления: двоичная, восьмеричная, десятичная и шестнадцатеричная. Основные принципы и правила алгоритма перевода из одной системы счисления в другую.
курсовая работа [343,1 K], добавлен 11.11.2014Предыстория чисел, связь названий чисел с определенной схемой счета. Системы счисления в Древнем Египте, Вавилоне, Греции, Риме, Америке, Китае, Индии, Аравии и Западной Европе. Обозначения чисел у древних евреев. Позиционные системы счисления.
реферат [34,3 K], добавлен 15.03.2013Обработка информации и вычислений в вычислительной машине. Непозиционные и позиционные системы счисления. Примеры перевода десятичного целого и дробного числа в двоичную систему счисления. Десятично-шестнадцатеричное и обратное преобразование чисел.
контрольная работа [41,2 K], добавлен 21.08.2010Понятие и классификация систем счисления. Перевод чисел из одной системы счисления в другую. Перевод правильных и неправильных дробей. Выбор системы счисления для применения в ЭВМ. Навыки обращения с двоичными числами. Точность представления чисел в ЭВМ.
реферат [62,0 K], добавлен 13.01.2011Примеры правила перевода чисел с одной системы в другую, правила и особенности выполнения арифметических операций в двоичной системе счисления. Перевод числа с десятичной системы в двоичную систему счисления. Умножение целых чисел в двоичной системе.
контрольная работа [37,3 K], добавлен 13.02.2009Определение понятия и видов систем счисления - символического метода записи чисел, представления чисел с помощью письменных знаков. Двоичные, смешанные системы счисления. Перевод из одной системы счисления в другую и простейшие арифметические операции.
курсовая работа [232,6 K], добавлен 16.01.2012Система счисления как совокупность приемов и правил для обозначения и наименования чисел, ее разновидности и критерии классификации. Свойства позиционных однородных систем с естественным множеством цифр. Преобразование чисел из одной системы в другую.
методичка [1,3 M], добавлен 21.09.2011