Преобразование рефлексного кода в позиционный двоичный

Преобразователь двоичного однопеременного кода в позиционный двоичный код

ОПИСАНИЕ

ИЗОБРЕТЕНИЯ

Союз Советскик

Социалистических

Республик

К АВТОРСКОМУ СВИДЕТЕЛЬСТВУ (61) Дополнительное к авт. свид-ay(22) Заявлено 081080 (21) 3211996/18-24 f31) M. Кл з с присоединением заявки ¹ (23) Приоритет

G 06 F 5/02

Государственный комитет

СССР но делам изобретений и открытий

Опубликовано 30.0882,Бюллетень № 32 (53) УДК681. 325 (088. 8) Дата опубликования описания 300882

/ Ъ (72) Автор изобретения

В.В.Голицын (71) Заявитель (54) ПРЕОБРАЗОВАТЕЛЬ- ДВОИЧНОГО ОДНОПЕРЕМЕННОГО

КОДА В ПОЗИЦИОННЫЙ ДВОИЧНЫЙ КОД

Изобретение относится к автоматике и цифровой вычислительной технике и может быть использовано при построении преобразователей в системах обработки информации и в оборудовании с точным перемещением исполнительных органов.

Известен преобразователь статического кода Грея в двоичный код, содержащий регистр входного кода, логичес-, кие блоки и распределитель импульсов (11 .

Недостаток данного устройства состоит в ограниченных функциональных воэможностях, поскольку оно обеспечивает преобразование только рефлексного двоичного кода (кода Грея).

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

Недостаток известного преобразователя состоит в ограниченных функциональных воэможностях, поскольку он также не может быть применен для преобразования смещаемого однопеременного кода.

Цель изобретения — расширение класса решаемых задач путем преобразования смещаемого однопеременного кода.

Поставленная цель достигается тем, что в преобразователе двоичного однопеременного кода в позиционный двоичный код содержащем группу блоков управляемых полусумматоров, первый вход

j-го блока управляемых полусумматоров (i — от 1 до -), где и — число разрядов и преобразуемого кода, является входом (2i 1)-го разряда входного кода пре- образователя, а второй вход 1-го блока управляемых полусумматоров соединен с первым выходом ((+1)-го блока управляемых полусумматоров и является (2i- 1)-м разрядом выходного кода преобразователя, а –ый блок управляемых

A полусумматоров вйполнен в виде элемента отрицания равнозначности, первый вход-которого соединен c (n-1)-ым разрядом входного кода преобразователя, а второй. вход — с и -ым разрядом входного кода преобразователя и с иым разрядом выходного кода преобразователя, третий вход j -го блока управляемых полусумматоров соединен с 2 955023

-ым разрядом входного кода преобразователя, четвертый вход -го блока управляемых полусумматоров соединен с 21-м разрядом выходного кода преобразователя и с вторым выходом (+1)— го блока управляемых полусумматоров.

Кроме того, в преобразователе блок управляемых полусумматоров содержит три элемента отрицания равнозначности, два элемента И, элемент ИЛИ и элемент НЕ, вход которого является 10 вторым входом блока управляемых полусумматоров и соединен с первыьи входами первого элемента И и первого элемента отрицания равнозначности, выход которого является первым выхо- 15 ° дом блока управляемых полусумматоров, первый вход которого соединен с вторым входом первого элемента И и первым входом второго элемента отрицания равнозначности, выход которого соеди»20 нен с вторым входом первого элемента отрицания равнозначности, а второй вход второго элемента отрицания равнозначности является третьим входом блока управляемых полусумматоров и соединен с первым входом второго элемента И, второй вход которого соединен с выходом элемента НЕ, выходы первого и второго элементов И через элемент ИЛИ соединены с первым входом третьего элемента отрицания равнозначности, второй вход которого является четвертым входом блока управляемых полусумматоров, а выход третьего элемента отрицания равнозначности является вторым выходом ьлока управляемых полусумматоров.

Смещаемый однопеременный код формируется на кодовых дорожках, имеющих рисунок кодовых площадок вида

2-3-3-2-3 парами разрядов, что поз- 40 воляет вдвое сократить число кодовых дорожек и соответственно габариты преобразователя перемещения в код.

На фиг.1 дана блок-схема предлагаемого преобразователя; на фиг.2 — 45 элементная схема блОка управляемых и ол у сумматор ов .

Преобразователь двоичного однопеременного кода в позиционный двоичный код содержит (фиг. 1) элемент 1 отрицания равнозначности, входы которого подключены к старшим разрядам

AN, А < двоичного однопеременного кода, и блоки 2 управляемых полусумматоров, каждый из которых имеет четыре входа и два выхода.

Блоки 2 управляемых полусумматоров соединены последовательно от старших разрядов к младшим, причем два входа последующего блока подключены соответственно к двум выходам предыдущего блока 2, 60 а два других входа подключены к соответствующей паре разрядов двоичного однопеременного кода.

Блок 2 управляемых полусумматоров содержит (фиг.2) первую схему 3 отрицания равнозначности, к одному входу которой подключен вход блока управляемых полусумматоров 2, а к другому входу подключен выход элемента И 4, входы которого подключены соответственно к выходам И 5-6. Первый вход элемента И 6 подключен к входу блока

2 управляемых полусумматоров, к входу элемента HE 7 и первому входу элемента 8 отрицания равнозначности, второй вход которого подключен к выходу элемента 9 отрицания равнозначности.

Рассмотрим процесс преобразования двоичного однопеременного кода, начиная со старших разрядов. Для этого в исходном коде четырех старших разрядов выделим каждую 2″ кодовую комбинацию и полученный сжатый код сведем в табл.1.

В результате преобразования пер-, вых двух строк табл.1 элементом 1 отрицания равнозначности получим табл.2 коЩовых комбинаций входов блока 2 управляемых полусумматоров.

Результаты преобразования строк табл.2 логическими элементами, входящими в логический блок 2 сведены в табл.,3.

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

На входы следующего блока 2 поступают выходы предыдущего блока 2 управляемых полусумматоров и й-4-й, N-5-й разряды двоичного однопеременного кода.

Выделяя из исходного кода каждую

N-5

2 -ю кодовую комбинацию, для кодовых комбинаций входов этого блока получим периодически повторяющую

a àáë . 2, а . затем табл . 3.

Преобразование исходного двоичного однопеременного кода остальными блоками 2 управляемых полусумматоров аналогично описанному и в результате на выходе преобразователя формируется двоичный позиционный (N+1)-разрядный код.

Применение предлагаемого преобразователя обуславливает возможностью сопряжения малогабаритных преобразователей перемещения в однопеременный код со стандартной аппаратурной переработки цифровой информации.

I о

1

1 о

I,о а 1

I о

1 с-!!

1 с

1 !

I I

«-!

1

1 с-1

1

1 (I

1 и х

3 о о

Ц

М сй 1

I о

I

1

«4 Ъ б м б

Ц х а

1 И бб!

1 С4

Ц о а х

Ю б-б

ra

1

1 ц) 1

I, б!!

1!

1 а

I б-4

1 Ф

I б-!

I !

I 1

1 1

1 1

I n 1

1 «-1 I

I

Г

1 (ч 1

1 т4

— -4

1 ! I !

«

Х вЂ” — 1

g I о 1л

Я! .1 о

«Ф 1

Я 1

Ф 1 Ю

О I !

2 1

I 1! 1 гЪ

I 1

I — — I

1 I

1 1

1 (i) I

I 1

1 !

1 W 1

1 !! 1

I — — I

I 1

I 1! о

1 1! о о о о

955023

1 сч

1

П!

“-1

1 1

I к

I

О I

1

1 Еб

1

1

1

1

I

l

1

1

1, 1

1

I

1

1

1

1

I

I (1 !

I бЛ 1 т-! !1

I 1

I 1

1 еЪ 1

«-1

I ! — — — ——

I

I C4 1

«-1 1

1 1 ! — — б

I о 1

« 1

I 4 б — — — б

1

1 ! ! !

I I

1 I б:0 1

1 I ! —!

1 I .1 I

1 бО 1!

– — —

1

1

1 ——

I м

1 !

1

1 СЧ

1 I

1 о

I I

I 1 1 о о о о о о о о о о о о о о о о о б«1 («! е.Ч

I

1

1 о

1

I !

1 о

I

1

I

I б

1

1

I г4

1

I

1 о

1

1

1

1 б-4

I !

955023! ! и ! ч-!

3 — —.— 3 о о о о о о о о! м н !

1 —.3! ! с-! !

о о о о н о о! м

N I!!

Х

Ц х х о — — — -Ч

3 1 о

k( о

Х

1 ! Ф

1 о о н н о о о о < о о о о о ч о о о !

1 о о н ч о о о о о о о

955023

Формул а и з о бр ет е ни я

1. Преобразователь двоичного од- .

нопеременного кода в позиционный двоичный код, содержащий группу блоков управляемых полусумматоров, первый вход» -го блока управляемых полусумматоров (»- от 1 до у), где и » число разрядов преобразуемого кода, является входом (2» -1) -го разряда входного кода преобразователя, а вто- »О рой вход » -ro блока управляемых полусумматоров соединен с первым выходом (» +1)-го блока управляемых полусумматоров и является (2» 1)-м разрядом выходного кода преобразователя, )5 а –й блок управляемых полусуммато- . л

2 ров выполнен в виде элемента отрицания равнозначности, первый вход которого соединен с (n-1)-м разрядом входного кода преобразователя, а вто- 20 рой вход — с р -м разрядом входного кода преобразователя и с П-м разрядом выходного кода преобразователя, о т— л и ч а ю щ и”й с я тем, что, с цеJIblo расщирения класса решаемых задач путем преобразования смещаемого однопеременного кода, в нем третий вход

j-ro блока управляемых полусумматоров соединен с 2» -м разрядом входного кода преобразователя, четвертый вход

l -го блока управляемых полусумматоров соединен с 2»-м разрядом выходно го кода преобразователя и с вторым выходом (» +1)-го блока управляемых полусумматоров.

2. Преобразователь по п.1, о т л и-З5 ч а ю шийся тем, что в нем блок управляемых полусумматоров содержит

» три элемента отрицания равнозначнос- ти, два элемента И, элемент ИЛИ и элемент НЕ, вход которого является вторым входом блока управляемых полусумматоров и соединен с первыми входами первого элемента И и первого элемента отрицания равнозначности, выход которого является первым выхо” дом блока управляемых полусумматоров, первый вход которого соединен с вторым входом первого элемента И и первым входом второго элемента отрицания равнозначности, выход которОго соединен с вторым входом первого элемента отрицания равнозначности, а второй вход второго элемента отрицания равнозначности является третьим входом блока управляемых полусумматоров и соединен с первым входом второго элемента И, второй вход которого соединен с выходом элемента НЕ, выходы первого и второго элементов

https://www.youtube.com/watch?v=tXva6YkMYBE

И через элемент ИЛИ соединены с первым входом третьего элемента отрицания равнозначности, второй вход которого является четвертым входом блока управляемых полусумматоров, а выход третьего элемента отрицания равнозначности является вторым выходом блока управляемых полусумматоров.

Источники информации, принятые во внимание при экспертизе

1. Авторское свидетельство СССР

9 369706, кл. Н,ОЗ К 13/24, 1970.

2. Филиппов A.Ã. и Белкин О.С.

Проектирование логических узлов ЭВМ.

M. “Советское радио”, 1974, с.81-83 (прототип).

955023

Составитель М.варшавский

Редактор Н.Ковалева Техред A.À÷ Корректор Н.Король

Заказ 6437/52 Тираж 731 Подпис ное

ВНИИПИ Государственного комитета СССР по делам изобретений и открытий

113035, Москва, Ж-35, Раушская наб., д.4/5

Филиал ППП “Пате нт”, r. Ужгород, ул. Проектная, 4

      

Источник: http://www.FindPatent.ru/patent/95/955023.html

Большая Энциклопедия Нефти и Газа

Cтраница 1

Двоичный рефлексный код образуется из двоичного нормального путем добавления к двоичному числу этого же числа в том же коде, но со сдвигом на один разряд в сторону младшего разряда и без переноса единицы в следующий разряд в процессе сложения.  [1]

Преобразовательдвоичного рефлексного кода в двоичный естественный.  [2]

Декодированиедвоичного рефлексного кода можно осуществить путем непосредственного сравнения декодируемой комбинации с другой опорной комбинацией, выраженной также в двоичном рефлексном коде и вырабатываемой отдельно.  [3]

Наиболеечасто используемым двоичным рефлексным кодом является код Грея.  [4]

Следовательно, двоичный рефлексный код, а вместе с ним и все рефлексные коды вообще являются кодами, лучше всего отвечающими требованиям аналого-цифрового преобразования.  [5]

Тг – Тгп со схемами совпадения И3 на входе, на которые подаетсядвоичный рефлексный код в виде потенциалов. Каждый разряд собственно преобразователя, кроме старшего, состоит из пяти логических элементов И и И 2, НЕЪ НЕ2 и ИЛИ.  [6]

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

Декодирование двоичного рефлексного кода можно осуществить путем непосредственного сравнения декодируемой комбинации с другой опорной комбинацией, выраженной также вдвоичном рефлексном коде и вырабатываемой отдельно.  [8]

Мы рассмотрим случаи взвешенного и невзвешенного кода, ограничиваясь в первом случае двоичным натуральным кодом, а во втором – двоичным рефлексным кодом и циклическими кодами с рекуррентной последовательностью.  [9]

Учитывая все сказанное, ясно, что хотя проблема неопределенности границ может считаться теоретически решенной применением одного из двух методов, на практике выгоднее обращаться к другому коду, не связанному с этой проблемой и не требующему вследствие этого дополнительных опробывающих органов и органов избирания. Этот код, известный под названиемдвоичного рефлексного кода, будет рассмотрен в следующем параграфе.  [10]

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

Рассмотрим случай кодов на шесть знаков. Обозначим цифры двух эквивалентных кодовых комбинаций через Re, Rs, Rt, Rs, Rz, Ri длядвоичного рефлексного кода и через Ne, Л / 5, N, N3, NZ, NI для двоичного натурального кода, при условии, что цифра шестого ранга в обоих случаях соответствует самому старшему разряду. Соотношения между цифрами обоих кодов могут быть выражены в разных формах.  [12]

Когда уровень строго равен 7 или 8, отсутствует всякая неопределенность. Если же оба уровня 7 и 8 перекрываются, то сомнительным является определение только одной цифры самого старшего двоичного разряда, которая может быть замещена своим дополнением до единицы.

Это означает, что соответствующий фотоэлемент не находится ни явно в темноте, ни явно на свету. Таким образом, придвоичном рефлексном коде максимальная совершенная ошибка ( недостаток или избыток) будет всегда ограничена половиной интервала квантования.

 [13]

В случае невзвешенного кода отдельно рассматриваемой цифре нельзя приписать определенного значения. Только группа цифр кода имеет осмысленное значение. В этом случае мы приходим к другим методам декодирования. В качестве примера рассмотрим сначала метод, подходящий длядвоичного рефлексного кода, а затем два других метода, пригодных для рекуррентного двоичного кода.  [14]

Страницы:      1

Источник: http://www.ngpedia.ru/id88295p1.html

Двоичный позиционный код

В обыденной жизни применяется десятичная система счисления, в которой используется 10 цифр от 0 до 9 и число представлено как сумма степеней числа 10. Например, число 1407 представляет сокращенную запись суммы 1*103+4*102+0*101+7*100. В цифровой электронике чаще всего используется двоичная система счисления.

Двоичная (бинарная) система основана на степенях числа 2, оперирует только с двумя символами (цифрами): 0 и 1. Двоичная цифра (символ 0 и 1) является единичной элементарной информацией, которая называется битом.

Биты объединяются в слова определенной длины, слово длиною в 8 бит называется байтом. В настоящее время наиболее распространены системы с байтовой организацией данных.

Поскольку в двоичной системе используется два символа, она имеет основание 2 и значения, которые должны быть приписаны отдельным позициям (веса), являются степенями числа 2.

Целые числа без знака в двоичной системе счисления представляются следующим образом:

am2m+am-12m-1+….+a424+a323+a222+a121+a020, где ai=0, или 1.

Наименьшая значащая цифра (младший разряд числа) здесь расположена справа, а слева последовательно каждая цифра представляет собой более высокий разряд, более высокую степень числа 2. Например, код 1011 представляет число 1*23+0*22+1*21+1*20=8+2+1=11.

При сдвиге целого числа на одну позицию влево производится умножение на два, а при сдвиге на одну позицию вправо производится деление на 2, что обусловлено основанием этой системы счисления.

Перевод чисел из двоичной системы счисления в десятичную

Перевод выполняется путем сложения весов тех разрядов, в которых имеются единицы. Например:

Веса 27 26 25 24 23 22 21 20.

Переводимое число 1 0 0 1 1 0 1 1 = 128 + 0 + 0 + 16 + 8 + 0 + 2 + 1 = 155.

Двоично-десятичный код

Двоично-десятичный код представляет собой десятичный код, каждый разряд которого представлен четырьмя разрядами двоичного кода. Например:

4610 = 0100.01102-10; 84210 = 1000.0100.00102-10.

Он используется для выдачи информации на цифровые индикаторы. На каждый индикатор поступает четырехразрядный двоичный код и высвечивается одна из цифр десятичного кода.

Восьмеричный код

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

Для облегчения работы двоичные коды можно представить в восьмеричной форме: каждые три разряда, начиная с младшего, записываются в виде десятичной цифры.

Так как самое большое число, которое можно записать тремя двоичными разрядами равно 7 (1112=710), то восьмеричные коды записываются цифрами от 0 до 7. Например, 101.1102 = 568 ,11.1002 = 347.

Дата добавления: 2016-11-29; просмотров: 1749;

Источник: https://poznayka.org/s72755t1.html

Код Грея и его использование в дисковых накопителях

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

Что такое код Грея, в чем его принципиальное отличие от других систем кодирования чисел и почему именно этот код используется для нумерации цилиндров в дисковых накопителях? Надеемся, что данная публикация даст ответы на поставленные вопросы.

В мире существует множество схем кодирования чисел, которые также принято называть еще и системами счисления. Система счисления – это совокупность символов и правил их комбинации для обозначения числа. Различают два типа систем счисления: позиционные и непозиционные.

Непозиционная система счисления – это та, при которой для обозначения чисел вводятся определенные знаки, числовой «вес» которых всегда одинаков и не зависит от месторасположения. Непозиционными системами пользовались древние египтяне, греки, римляне и некоторые другие народы древности.

В таких системах счисления от положения знака в записи не зависит величина, которую он обозначает; поэтому они называются непозиционными системами счисления.

Характерным примером является римская система счисления, в которой имеются символы латинского алфавита со следующими значениями: I – 1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000.

Для записи чисел используется следующий алгоритм: каждый меньший знак, поставленный слева от большего, вычитается из него, а каждый меньший знак, поставленный справа от большего, прибавляется к нему. Например, число 124 в десятичной системе представляется как римское CXXIV, т.е. 100+10+10+(5-1).

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

В позиционных же системах счисления одна и та же цифра, в зависимости от ее положения в числе, может иметь разные значения. Другими словами, величина, обозначаемая цифрой в записи числа, зависит от ее позиции. Количество используемых цифр называется основанием позиционной системы счисления.

Система счисления, применяемая в современной математике, является позиционной десятичной системой. Ее основание равно десяти, так как запись любых чисел производится с помощью десяти цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Хотя десятичную систему называют арабской, но зародилась она в Индии, в 5 веке.

В Европе об этой системе узнали в 12 веке из арабских научных трактатов. Этим и объясняется название “арабские цифры”. Однако широкое распространение данная система получила в 16 веке. Эта система позволяет легко выполнять любые арифметические вычисления, записывать числа любой величины.

Распространение арабской системы дало толчок развитию математики.

Позиционные системы могут быть как с постоянным основанием, так и с произвольным. К позиционным системам с постоянным основанием относится десятичная система, а системой с произвольным основанием является система отсчёта времени: количество секунд в минутах и количество минут в часах по 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). Таблица 1показывает первые восемь чисел в двоичном коде и в коде Грея.

Алгоритм перевода чисел, записанных в коде Грея, в позиционный код прост: каждый разряд в позиционном коде равен сумме по модулю 2 этого и всех, более старших, разрядов в коде Грея.

Таблица 1. Первые восемь чисел в кодировке Грея

Десятичный код Двоичный код Код Грея
000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100

Благодаря своему основному свойству (отличие соседних чисел только в одном разряде) код Грея применяется, например, в построенных на кодовых дисках определителях углового положения вала.

В оптическом кодовом диске единицы и нули кодируются прозрачными и непрозрачными областями. С одной стороны диск просвечивается ориентированной вдоль его радиуса световой щелью, с другой стороны размещаются фотодиоды.

Считываемый с фотодиодов двоичный код и указывает угол поворота диска.

Но, по истине, массовое применение код Грея получил в накопителях на жестких дисках – HDD. В них код Грея является составной частью сервоинформации – сервометок, размещенных на треках. В качестве примера на рис.

1 представлена структура сервометки накопителей Fujitsu семейства MPG3xxxAT. В структуре этой сервометки поле кода Грея обозначено, как SCD, и для его считывания отводится 0.53 мкс.

Как уже упоминалось в начале статьи, код Грея в составе сервометки определяет номер цилиндра (трека).

Кроме того, код Грея очень широко используется при построении систем определения углового положения различных устройств, т.е. в так называемых кодовых дисках-определителях углового положения вала. В таком оптическом кодовом диске единицы и нули кодируются прозрачными и непрозрачными областями. С одной стороны диск просвечивается ориентированной вдоль его радиуса световой щелью, с другой стороны размещаются фотодиоды. Считываемый с фотодиодов двоичный код и указывает угол поворота диска. Недостаток кодирования углового положения позиционным двоичным кодом заключается в том, что при смене нечётного кода чётным считанный с фотодиода код может оказаться неверным. Характеристики фотодиодов обычно не идентичны и при смене сразу нескольких разрядов выходные уровни фотодиодов могут измениться не строго одновременно. Например, при переходе от третьего угла к четвёртому (от кода 3 к коду 4 в десятичной системе) или от седьмого угла к нулевому меняются все разряды, и какое-то время на выходе фотодиодов можно получить любое значение от 0 до 7. При использовании же кода Грея ошибка при переходах не будет превышать один угол, т.к. в каждом переходе изменяется только один разряд.

Источник: http://www.mirpu.ru/power/89-obpr.html

Способ преобразования бинарного кода грея в двоичный код

Настоящее изобретение относится к области цифровой вычислительной техники и может быть использовано в вычислительных и телеметрических системах для выполнения операций по переводу чисел, представленных в коде Грея, в двоичный код и построения преобразователей кода Грея.

Из существующего уровня техники известен способ перевода кода Грея в двоичный заключающийся в следующем: каждый разряд в позиционном двоичном коде равен сумме по модулю 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.

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

Кроме того, отпадает необходимость в хранении исходного числа в коде Грея и накоплении последовательно получаемых разрядов двоичного кода.

Способ преобразования бинарного кода Грея в двоичный код, заключающийся в том, что число в коде Грея складывают по модулю два с этим же числом, сдвинутым на один разряд вправо; число, получившееся в результате сложения, складывают по модулю два с этим же числом, сдвинутым на два разряда вправо; последующее сложение результата предыдущей операции осуществляют с этим же числом, сдвинутым вправо на количество разрядов, определяемое геометрической прогрессией 2, где n – номер шага сложения; операцию сложения прекращают, когда очередной сдвиг приводит к обнулению числа; результат последнего сложения представляет собой искомое число в двоичном коде.

Источник: https://edrid.ru/rid/216.013.652f.html

Нейронная сеть для преобразования остаточного кода в двоичный позиционный код

Изобретение относится к нейронным сетям для преобразования остаточного кода в двоичный позиционный код является базовой схемой восстановления позиционного числа по его остаткам. Техническим результатом является сокращение оборудования.

Для этого нейронная сеть для преобразования остаточного кода в двоичный позиционный код содержит входной слой нейронов, n-нейронных сетей конечного кольца для преобразования остаточного кода в код обобщенной позиционной системы счисления, n-постоянных запоминающих устройств для хранения двоичных эквивалентов коэффициентов обобщенной позиционной системы счисления и параллельный сумматор. 1 ил.

Изобретение относится к вычислительной технике и может быть использовано в модулярных нейрокомпьютерах для реализации операции вывода данных.

Известно устройство для преобразования числа из системы остаточных классов в позиционный код (а.с. 1005028, G06F 5/02), содержащее сдвиговый регистр, блок синхронизации, блок памяти констант и позиционный накапливающий сумматор. Однако такое устройство характеризуется высокой сложностью.

Наиболее близким по технической сущности к заявленному устройству является преобразователь кодов из системы остаточных классов в двоичный позиционный код (а.с.

813408, G06F 5/02), содержащий входной регистр, дешифраторы, преобразователь кодов из системы остаточных классов в полиадический код, группу элементов ИЛИ, элементы задержки и сумматор.

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

Целью настоящего изобретения является сокращение оборудования преобразователя остаточного кода в двоичный позиционный код. Поставленная цель достигается тем, что в преобразователь введены нейронные сети конечного кольца и постоянные запоминающие устройства.

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

Обратное преобразование числа из модулярного представления в двоичную форму базируется на классической теореме из теории чисел, которая называется Китайской теоремой об остатках (КТО). На основании известного представления чисел в СОК (α1, α2, …, αn) КТО делает возможным определение числа в ПСС

, если наибольший общий делитель любой пары модулей равен 1.

КТО имеет вид

где

,

для (pi,pj)=1 для i≠j

αi – остаток числа x по модулю pi, для i=1, 2, …, n.

Используются разные формы китайской теоремы об остатках (КТО). Из (1) видно, что из КТО получаем

, а не само X. Если известно, что x находится между 0 и P-1, то можно записать

В некоторых случаях желательно иметь вид КТО, где сумма появляется без оператора по модулю Р. Это можно сделать путем определения вспомогательной функции R(x), так чтобы

где

.

R(x) – это функция x, определяемая для любого целого числа x.

Из КТО видно, что выражение

отличается от x кратным значением P, эта разность равна – P·R(x).

Функция R(x) называется рангом числа и широко используется при вычислениях в модулярной арифметике.

Ранг числа R(x) показывает сколько раз нужно вычесть величину диапазона P из полученного числа, чтобы вернуть его в диапазон. Таким образом, если найдены Pi,

и ранг числа R(x), то для перевода числа достаточно вычислить

и ввести эту сумму в диапазон [0,P] вычитанием величины, кратной P. Недостаток рассмотренного метода заключается в том, что приходится иметь дело с большими числами Pi и, кроме того, действия сложения и умножения надо выполнять в позиционной системе счисления, а полученный результат необходимо вводить в диапазон вычитаемой величины, кратной P.

Необходимо отметить, что Pi и

являются константами выбранной системы и определяются заранее, а ранг числа R(x) – переменная величина и сложность ее вычисления линейно зависит от числа оснований СОК, что приводит к еще более сложной процедуре восстановления числа.

Кроме того, применение КТО для восстановления числа требует сложных вычислений в модулярном нейрокомпьютере, так как элементарные процессоры выполняют операции по модулю pi, где i=1, 2, …, n, а не по модулю P=p1p2…pn, как это требуется по КТО.

Из выражения (2) видно, что для его отображения необходимы сумматоры по модулю P.

Эту нежелательную особенность можно обойти при помощи отображения СОК на ассоциированное представление со смешанным основанием, а затем и на двоичное представление.

Коэффициенты ai могут быть представлены с помощью n цифр со смешанными основаниями. Отображение из СОК в обобщенную позиционную систему счисления (ОПСС) может быть определено рекурсивно с помощью операций по малым модулям pi.

Для перехода от вычислений по модулю P к вычислению по модулям pi предлагается метод восстановления чисел на основе совместного использования КТО и ОПСС.

Пусть задана система оснований p1, p2, …pn, с диапазоном P=p1p2…pn, и ортогональными базисами B1, B2, …, Bn, которые определяются как

где mi – веса ортогональных базисов.

Тогда КТО можно представить в виде

где αi – остатки (вычеты) числа X по mod pi;

R(x) – ранг числа.

Представим ортогональные базисы Bi в ОПСС, тогда

где bij – коэффициенты ОПСС, i,j=1, 2,…, n.

На основании (7) запишем XОПСС, выражение (6) в виде

Так как Bi mod pi=0, ∀j>i, то перед первым значащим разрядом будет i-1 нулей.

Для удобства вычислений базисы можно представить в виде матрицы

Тогда XОПСС, запишется как

При этом

где: ai – коэффициенты ОПСС числа x;

αi – вычеты числа x по mod pi;

bij – ортогональные базисы, представленные в ОПСС; i,j=1, 2, …, n.

При использовании традиционной вычислительной базы произведения αibij mod рi можно поместить в память, а адресами будут являться остатки αi.

Если вычислительная база представлена в нейросетевом базисе, тогда в качестве весовых коэффициентов нейронной сети будут выступать bij, а в качестве входных сигналов – остатки αi.

Последовательность вычислений для первого варианта имеет вид

Для определения всех цифр ОПСС требуется две операции: одна операция для выборки из памяти и одна операция для суммирования. По сравнению с известным последовательным методом Гарнера выигрыш определяется выражением

. Для реализации этого метода в нейропроцессоре необходимо иметь средства для выполнения модулярных операций, например нейронные сети конечного кольца по pi основаниям, где i=1, 2, …, n.

Пример. Пусть основания системы p1=3, p2=5, p3=7, p4=2. Дано число x=(2,3,0,1), представленное в СОК по выбранным модулям. Найти представление этого числа в ОПСС, то есть x=[a1,a2,a3,a4]. На основании выражения (5) определим ортогональные базисы СОК: B1=70, B2=126, B3=120, B4=105. Представим базисы Bi в ОПСС, тогда bij:

.

В связи с тем, что константы bij определяются выбором системы модулей СОК, то их с учетом переноса в i-разрядах можно поместить в память, тогда процесс преобразования можно представить в виде

Для определения всех цифр ОПСС требуется две операции: одна операция для выборки из памяти и одна операция для суммирования. По сравнению с последовательным итерационным процессом выигрыш равен n-1, где n – число модулей СОК.

Полученные значения коэффициентов ОПСС числа x используем для образования двоичного кода.

Нейронная сеть для преобразования остаточного кода в двоичный позиционный код представлена на чертеже.

Нейронная сеть содержит входной слой нейронов 2, n-нейронных сетей конечного кольца (НСКК) 3, n-постоянных запоминающих устройств (ПЗУ) 4, сумматор 5, вход нейронной сети 1, выход нейронной сети 6 и весовые коэффициенты и w=bij 7.

Входной слой 2 предназначен для временного хранения входного остаточного кода, то есть он выполняет роль регистра.

НСКК преобразует остаточный код в код ОПСС, при этом число представляется в виде, соответствующем ОПСС, следующим образом X=a1+a2p1+a3p1p2+…+anp1p2…pn-1, где ai – называется коэффициентом ОПСС, причем 0≤ai

Источник: http://bankpatentov.ru/node/755951

Особенности преобразования двоичного числа в двоично-десятичный код методом левого сдвига

Двоично-десятичный код используется, как правило, в устройствах ввода-вывода для организации удобного для пользователя способа обмена информации с цифровым устройством, и в первую очередь, в узлах (модулях) индикации.

Один весьма известный, в узком кругу, специалист написал в учебных целях статью с 42 подобными подпрограммами (ПП). Все эти подпрограммы, и статья в целом, отвечают только на один из двух основных вопросов, которые интересуют начинающих осваивать МК (и не только их), а именно на вопрос: «Как?».

 А вот на второй, не менее важный, вопрос («Почему именно так?») в этой статье ответа нет. Вообще, складывается впечатление, что этот писатель и сам не имеет четкого ответа на сей вопрос.

Надеюсь, что заинтересованный читатель найдет ответ на него в настоящей статье.

Для того, чтобы разобраться в этом вопросе надо понимать следующие смежные с программированием темы: системы счисления, основы двоичной арифметики и алгебры логики.

Напомню, что в большинстве МК используется двоичный код 8-4-2-1. Он сведен в таблицу 1. Все двоичные числа этой таблицы четырех разрядные, т.е. представляют собой тетрады.

Таблица 1. Двоичный код 8-4-2-1

С помощью кода 8-4-2-1 можно закодировать как 10 цифр десятичной системы счисления, так и все 16 шестнадцатеричной.

Обратите внимание на тетрады, выделенные серой заливкой. Эти тетрады для двоично-десятичного кода явно лишние. Их иногда называют запрещенными тетрадами или псевдотетрадами. При преобразовании двоичного кода в двоично-десятичный от них (псевдотетрад) надо грамотно избавляться. Это одна из проблем этого преобразования.

Ещё необходимо представлять, что сдвиг двоичного числа на один разряд (бит) влево эквивалентен умножению его на два.

Пример: 1010 0111 = 167
Сдвинем это двоичное число на бит влево и получим вдвое большее число: 1 0100 1110 = 334.

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

При этом будем помнить, что двоично-десятичный код не должен содержать псевдотетрад (см. табл. 1), и то, что при этом преобразовании возникают проблемы с переносом 1 между тетрадами, каждая из которых – это один десятичный разряд.

Так, при переносе 1 из младшего двоично-десятичного разряда (тетрады) в следующий более старший (следующую тетраду), число «теряет» 6 единиц, т.к. весовой коэффициент этого разряда 10, а в двоичной и системе счисления (и шестнадцатеричной тоже) он равен 16. Следовательно, сдвигая число влево надо производить соответствующую коррекцию, чтобы получить правильный результат.

Возьмем произвольное восьмиразрядное двоичное число. Например: 11101101 (в десятичной системе оно равно 237, а шестнадцатеричной – EDh). Затем будем «вдвигать» это двоичное число справа налево, в так называемую, двоично-десятичную разрядную сетку, производя необходимую для преобразования коррекцию.

Первые три сдвига для этого числа можно сделать «безболезненно», без всякой коррекции. В младшие разряды двоично-десятичной сетки записалось число 7.
Следующий четвертый сдвиг его удвоит (вспомним, что левый сдвиг – это умножение на два): 1110 = 14
Получили запрещенную тетраду (псевдотетраду).

Чтобы от псевдотетрады «избавиться», к ней надо добавить число 6 (110 в двоичной системе).
Проделаем эту операцию: 1110 + 110 = 10100. Вспомним, что полученное число – это не простое двоичное число, а двоично-десятичое число. Весовой коэффициент его старшего разряда не 16, а 10. Значит, двоично-десятичное число 10100 будет равно десятичному числу 14.

Коррекция произведена.
На практике используется более удобный и универсальный способ коррекции. Суть его в том, коррекция осуществляется до четвертого сдвига, и то только тогда, когда это необходимо. Дело в том, что уже после третьего сдвига можно однозначно судить получится при следующем сдвиге псевдотетрада или нет.

Напомню, что псевдотетрады возникают для чисел больших девяти. Это значит, если после третьего сдвига в трех младших разрядах будет двоичное число не больше чем 4 (100), то после следующего сдвига псевдотетрада не появится. Псевдотетрады возникнут тогда, когда перед четвертым сдвигом (т.е.

перед очередным умножением на 2) в двоично-десятичной сетке будет любое число ≥5 (101), как в нашем случае было 7. Для осуществления коррекции перед четвертым сдвигом надо:

  1. Проверить число в трех младших разрядах двоично-десятичной сетки.
  2. Если оно меньше 5, то коррекцию не производить.
  3. Если оно ≥5 (101), то к нему надо добавить 3 (011).

Этот третий случай мы как раз и наблюдаем.
Продолжим, добавим тройку, и сделаем 4-й сдвиг.

Обратите внимание, в двоично-десятичной сетке после 4-го сдвига у нас появилось число 10100, т.е. тоже число 14, что и при добавлении 6 после четвертого сдвига при рассмотренном ранее способе коррекции.

Почему так происходит?
Ответ прост. При левом сдвиге происходит удвоение как корректируемого, так и корректирующего числа (3 × 2 = 6). С математической точки зрения способы равнозначны.

Производим 5-й сдвиг.

Обратите внимание, младшая тетрада двоично-десятичного числа равна 1001 = 9, что вполне допустимо. Само двоично-десятичное число 101001 = 29. При  следующем сдвиге без коррекции получится число  1010011 = 53, а должно быть 29 × 2 = 58. Откорректировать возникшую погрешность можно, если перед сдвигом добавить к сдвигаемому числу «волшебное число» 3.

Возникла новая ситуация. В младшей тетраде двоично-десятичного числа «расположилось» число 9 (1001), а в средней 5 (101), точнее 50 (см. весовые коэффициенты разрядов этой декады).

Это значит, перед следующим сдвигом надо делать коррекцию не только младшей тетрады, но и следующей средней.

Для коррекции младшей тетрады к ней надо добавить 3, а для коррекции средней – 30, что и сделано ниже.

Теперь в младшей тетраде находится число 8 (1000), а, значит, при следующем (последнем) сдвиге и при отсутствии коррекции 1 перейдет в следующую тетраду в разряд с весовым коэффициентом 10, а не 16, как это было бы у обычного двоичного числа. Следовательно, перед 8-м сдвигом к младшей тетраде надо добавить 3.

Преобразование двоичного числа в двоично-десятичное закончено. Слева получен ожидаемый нами двоично-десятичный код десятичного трехразрядного числа 237
(10 0011 0111), но это на бумаге, в теории. В реальном микроконтроллере все выглядит похоже, но несколько иначе.

Хотя бы потому, что четырехразрядных (четырехбитовых) регистров не существует и для каждого двоично-десятичного разряда выделяется полный регистр. Для МК PIC среднего семейства (и не только) он восьмиразрядный. В старшей тетраде этого регистра всегда должны быть нули (0000).

Это несколько усложняет алгоритм преобразования.

Понимая все это, заметно проще разобраться в любой подпрограмме преобразования двоичного числа в двоично-десятичное методом левого сдвига.
Одна из лучших, на мой взгляд, таких подпрограмм – это универсальная подпрограмма Алексея Черепанова, которую можно найти здесь.

Источник: https://chipmk.ru/index.php/razdely/61-programmnye-resheniya/149-osobennosti-preobrazovaniya-dvoichnogo-chisla-v-dvoichno-desyatichnyj-kod-metodom-levogo-sdviga

Рефлексные коды, достоинства, области применения на примере кодов Грея. Переход к двоичным и обратно

Источник: http://uchebilka.ru/informatika/60311/index.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}
Рефлексные коды, достоинства, области применения на примере кодов Грея. Переход к двоичным и обратно 

Рефлексные (отображенные) коды.

 В простом двоичном коде при переходе от изображения одного числа к изображению соседнего старшего или младшего числа может происходить одновременное изменение цифр в нескольких разрядах. Так, при переходе от 7 к 8 одновременно изменяются цифры в 4-х разрядах.При некоторых способах кодирования непрерывных сообщений в двоичный код это может явиться источником значительных ошибок – ошибок неоднозначности.Один из распространенных и эффективных методов борьбы с такими ошибками – использование рефлексных (отраженных) кодов. Особенностью этих кодов является то, что соседние кодовые слова будут отличаться только в одном разряде, т.е. нет одновременного изменения цифр в нескольких разрядах.   

^

 

Особенности кода Грея следующие:

 1) Каждая последующая комбинация всегда отличается от предыдущей только в одной позиции (разряде).2) Смена значений элементов в каждом разряде при переходе от слова к слову происходит вдвое реже, чем в простом коде. Это свойство позволяет при том же быстродействии схемы кодирования достигать более высокой точности кодирования.3) При сложении двух соседних комбинаций по модулю 2 число единиц равно числу разрядов минус три (n-3).Это свойство может быть использовано для проверки правильности принятых комбинаций.4) В коде Грея можно выделить оси симметрии (оси «отражения»), относительно которых наблюдается идентичность элементов некоторых разрядах. Так, имеет место симметрия относительно оси, проверенной между числами 7 и 8 и т.д.

Оси симметрии между числами 2n-1-1 и 2n-1 называется главной осью симметрии.

 

^  является то, что в них вес единиц не определяется номером разряда. Код Грея трудно обрабатывать на ЭВМ.

Для перевода простого двоичного кода в код Грея можно использовать следующее правило: 1) Под двоичным числом записывается такое же число со сдвигом вправо на один разряд. (Младший разряд теряется).2)Производится поразрядное сложение двух чисел по модулю 2. 

^

1) Цифра старшего разряда остается без изменения;

2) Каждая последующая цифра инвертируется столько раз, сколько единиц ей предшествует в коде Грея.

^  ( рис. 5 – 5) характеризуется тем, что при переходе от изображения одного числа к изображению соседнего числа изменяются на одну единицу значения цифры только одного разряда, и ошибка считывания на границе кодовых участков не превышает единицы младшего разряда. [1]

Особенностьюрефлексных кодов является то, что последовательные целые числа, выраженные в этих кодах, отличаются друг от друга только одним разрядом. Поэтому эти коды используются в кодовых датчиках и преобразователях с пространственным кодированием для исключения погрешности неоднозначности при считывании. [2]

Невзвешенностьрефлексных кодов затрудняет непосредственное использование их для выполнения арифметических операций.

Поэтому перед вводом в машину рефлексный код преобразуется в естественный двоичный, двоично-десятичный или десятичный.

Зависимости между цифрами естественного и рефлексного двоичных кодов могут быть получены двоичным сложением, логическим сложением или двоичным умножением. [3]

Преимуществомрефлексного кода является то, что переходы от 0 к 1 в каждом разряде происходят в два раза реже, чем в истинном двоичном коде. [4]

Применениерефлексного кода, кроме того, позволяет повысить вдвое разрешающую способность преобразователя по сравнению с обычным двоичным кодом. [5] Врефлексном коде элементы кода расположены таким образом, что в любом из переходных положений они меняются только в одном разряде. [6]

Вдвоично-десятичном рефлексном коде для изображения его четных и нечетных декад применяются коды, являющиеся зеркальным отражением друг друга. [7]

Чтобы получитьдесятичный рефлексный код, достаточно, определив кодовые комбинации, представляющие десятичные цифры от 0 до 9, и ограничиваясь кодами на две десятичные цифры ( одна для единиц, другая для десятков), использовать эти же комбинации и для цифр десятков. [8]

Большое значениерефлексного кода заключается в его свойстве минимизировать ошибки кодирования; это его свойство связано с тем фактом, что при переходе от одного уровня к следующему изменяется только одна цифра. [9]

В качестверефлексного кода для передачи используется код Грея; его основное свойство заключается в том, что при переходе от одного уровня квантования к другому изменяется только одна цифра. Его использование в индивидуальных элементах телеизмерения позволяет с полной надежностью выполнять преобразование непрерывной величины углового положения первичного измерителя в цифровую. [10]

Порядок преобразованиярефлексного кода в истинный двоичный код следующий: старший разряд не изменяется, каждый из элементов в последующих разрядах не изменяется, если перед ним со стороны старших разрядов в изображении комбинации рефлексного кода находится четное число единиц; в противном случае элемент инвертируется. [11]

Под названиемдесятичного рефлексного кода подразумевается любой код, в котором десятичные цифры изображаются четырьмя двоичными цифрами таким образом, что при переходе от одной десятичной цифры к следующей меняется только одна двоичная цифра. [12]

Одним изшироко применяемых рефлексных кодов является код Грея, относящийся к невзвешенным. Преобразование кода Грея в двоичный рассмотрено в гл. [1]

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

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

Это свойство сохраняется при перестановке во всех кодовых комбинациях цифр каких-либо двух младших разрядов. Поэтому перестановка двух цифр одного рефлексного кода приводит к другому рефлексному коду. [2]

В отличие отнормального рефлексный код формируется по следующему правилу. [3]

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

Если, например, неправильное воспроизведение символа старшего разряда комбинации натурального кода, соответствующего числу 2 1 – 1, приводит к значительной ошибке, то для кода Грея эта ошибка составит величину одного младшего разряда. [4]

Сигналы информации направляются к преобразователюрефлексного кода ( Tr. GR), а затем к блоку, называемому преобразователем кодов ( СС); эти блоки заменяют принимаемые коды ( в случае телеизмерений) кодами другого типа, более удобными для операций декодирования. [5]

Разрешающая способность преобразователя при пользованиирефлексным кодом повышается вдвое по сравнению с обычным двоичным кодом. [6]

R напоминают, что речь идет орефлексном коде), синхронно с каждым из времен М6, М5, М4, Мз, М2 и MI рассматриваемого малого цикла. В конце интервала времени MI последовательный анализ заканчивается и содержимое адаптера может быть стерто, для того чтобы он спустя один элементарный интервал времени мог запомнить новый выбранный код. [7]

Если на вход Тгпр поступит четная сумма единицрефлексного кода, то Ггпр будет находиться в нулевом состоянии и на выходе элемента И2 импульс будет отсутствовать, что соответствует цифре О соответствующего разряда двоичного кода.

Если же на вход Тгпр поступит нечетная сумма единиц, он установится в единичное состояние и на выходе элемента И 2 будет выдана 1 соответствующего разряда двоичного кода.

Параллельно с выдачей разрядов двоичного кода на выходе преобразователя выдаются тактовые импульсы. [8]

Одним из возможных вариантов двоичного кодирования является образованиерефлексного кода, или кода Грея. В нем при возрастании десятичного числа на единицу изменяется значение только одного символа по сравнению с предыдущим двоичным числом. Такой код удобен, например, при преобразовании угла поворота кодирующего диска в цифровой код. [9]

DC ( или кодирующий сектор) несет изображениеиспользуемого рефлексного кода – двоичного или десятичного-и, поворачиваясь вокруг оси А, полностью или частично прерывает пучок света, испускаемый лампой L, расположенной параллельно диску. [10]

Введение блока связи обусловлено тем, что вдвоично-десятичном рефлексном коде для обозначения цифр четных и нечетных декад используются различные комбинации. [11]

Переход от одного кода к другому достигается последовательным сложением цифррефлексного кода в убывающем порядке, причем значение, присваиваемое цифрам натурального кода, будет 0, если сумма, которая им соответствует, равняется нулю или четная, и 1, если она нечетная. [12]