Преобразователи кодов

Содержание

Слайд 2

Слайд 3

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

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

из одной двоичной форму в другую
Слайд 4

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

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

два соседних значения шкалы сигнала отличаются только в одном разряде. Также они используются для кодирования номера дорожек в жёстких дисках.
Слайд 5

Преобразование двоичного кода в код Грея Коды Грея легко получаются из

Преобразование двоичного кода в код Грея
Коды Грея легко получаются из двоичных

чисел путём побитовой операции «Исключающее ИЛИ» с тем же числом, сдвинутым вправо на один бит. Следовательно, i-й бит кода Грея Gi выражается через биты двоичного кода Bi следующим образом:
где – операция «исключающее ИЛИ»; биты нумеруются справа налево, начиная с младшего.
function BinToGray(b: integer): integer;
begin
BinToGray := b xor (b shr 1)
end;
Пример: преобразовать двоичное число 10110 в код Грея.
10110
01011
---------
11101
Слайд 6

Слайд 7

Слайд 8

Слайд 9

Слайд 10

. Код Джонсона — двоичная система счисления, в которой два соседних

. Код Джонсона — двоичная система счисления, в которой два соседних значения

различаются только в одном двоичном разряде.
0000
0001
0011
0111
1111
1110
1100
1000

Четырёхбитный код Джонсона

Слайд 11

Операции циклического сдвига В Паскаль определены еще две операции над данными

Операции циклического сдвига

В Паскаль определены еще две операции над данными целого

типа, имеющие тот же уровень приоритета, что и операции and, *, /, div и mod. Это операции shl и shr, которые сдвигают последовательность битов на заданное число позиций влево или вправо соответственно. При этом биты, которые выходят за разрядную сетку, теряются. При выполнении операции shl освободившиеся справа биты заполняются нулями. При выполнении операции shr освободившиеся слева биты заполняются единицами при сдвиге вправо отрицательных значений и нулями в случае положительных значений.
С помощью операции shl возможна замена операции умножения целых чисел на степени двойки. Следующие пары выражений приводят к одинаковому результату: (a shl 1) = a * 2, (a shl 2) = a * 4, (a shl3) = a * 8.
Слайд 12

Пример побитовых операций и циклического сдвига var A, B: byte; begin

Пример побитовых операций и циклического сдвига
var
A, B: byte;
begin
A :=

11; {00001011}
B := 6; {00000110}
writeln('A=', A);
writeln('B=', B);
writeln('not A = ', not A); {11110100 = 244}
writeln('A and B = ', A and B); {00000010 = 2}
writeln('A or B = ', A or B); {00001111 = 15}
writeln('A xor B = ', A xor B); {00001101 = 13}
writeln('A shl 1 = ', A shl 1); {00010110 = 22}
writeln('B shr 2 = ', B shr 2); {00000001 = 1}
end.
Слайд 13

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

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

одной из двух целей: проверить наличие установленных в единицу битов или осуществить обнуление некоторых битов.
Подобная проверка нужна, если число представляет набор признаков с двумя возможными значениями (набор флагов). Так, многие системные ячейки памяти содержат сведения о конфигурации компьютера или его состоянии. При этом установка бита с конкретным номером в 1 трактуется как включение какого-либо режима, а в 0 — выключение этого режима.
Пусть переменная a имеет тип byte и является байтом с восемью флагами. Необходимо проверить состояние бита с номером 5 (биты нумеруются справа налево от 0 до 7). Единица в бите 5 — это пятая степень числа 2, т.е. 32 (00100000). Поэтому, если в пятом бите переменной a стоит единица, то выполняется условие (a and 32) = 32, которое можно проверить в операторе ветвления if. Если необходимо проверить состояние нескольких одновременно установленных в единицу битов, то нужно вычислить соответствующее число как сумму степеней числа 2, где показатели степени равны номерам битов, установленных в 1. Например, для битов 5, 2 и 0 имеем 32+4+1=37. Если a имеет среди прочих единицы в битах 5, 2, 0, то выполнится условие (a and 37) = 37.
Пусть нужно обнулить какой-либо бит в переменной a типа byte (например, бит 3). Определим сначала число, содержащее единицы во всех битах, кроме третьего. Максимальное число, которое можно записать в тип byte, равняется 255. Чтобы в нем обнулить третий бит, вычтем из этого числа третью степень числа 2 (255-8=247). Если это число логически умножить на a, то его единицы никак не скажутся на состоянии переменной a, а нуль в третьем бите независимо от значения третьего бита переменной a даст в результате 0. Итак, имеем a:= a and (255-8). Аналогично можно обнулить несколько битов.
Операция or применяется при установке в единицу отдельных битов двоичного представления целых чисел. Так, чтобы установить бит 4 переменной a в единицу без изменения остальных битов, следует записать a:= a or 16, где 16 — четвертая степень числа 2. Аналогично устанавливаются в единицу несколько битов.
Операция xor применяется для смены значения бита (или нескольких битов) на противоположное (1 на 0 или 0 на 1). Так, чтобы переключить в противоположное состояние 3-й бит переменной a, следует записать a:= a xor 8, где 8 — третья степень числа 2.
Слайд 14