Шестнадцатеричный код
Он образуется аналогично восьмеричному, но объединяются четыре разряда, начиная с младшего, и записываются в виде одного символа. Самое большое число, которое можно записать четырьмя двоичными разрядами 11112 = 1510, что составляет уже 2 десятичных цифры, а представить нужно в виде одного символа. Поэтому вводятся новые символы для представления чисел от 10 до 15. Для этого используются буквы латинского алфавита А, B, C, D, E, F.
Десятичный код - 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Шестнадцатеричный код - 0 1 2 3 4 5 6 7 8 9 A B C D E F
Например: 1010.01112 = A716 (чаще используется обозначение A7H), 11.0111.01012 = 375H, 1111.1011.10012 = FB9H.
Шестнадцатеричный код чаще всего используется для общения человека и ЭВМ на уровне кодов.
Код Грея
Рассмотренные выше коды называются позиционными, так как вес каждого разряда определяется его положением (позицией ) в рассматриваемом коде. Так в двоичном позиционном коде 1 в крайнем правом разряде представляет число 20, в следующем разряде - 21 и т.д. Поэтому двоичный позиционный код еще называют кодом 8421. В цифровых датчиках применение этого кода может привести к большим ошибкам. В цифровых датчиках перемещения или угла поворота единица изображается отверстием в маске, через которое проходит световой луч, а ноль изображается непрозрачным участком маски.
"10" | "2" | Код Грея |
Таблица 5 Сравнение двоичного кода и кода Грея
Если пользоваться двоичным, то при перемещении маски, например, из положения 0111 в положение 1000 из-за неодновременной смены трех "1" на три "0" могут кратковременно возникнуть коды 1100, 1010, 1101 и т.д., которые значительно отличаются как от предыдущего, так и от последующего значения и погрешность становится непредсказуемой. Все проблемы снимаются при использовании кода Грея, в котором при увеличении кода на 1 каждый раз изменяется только один из разрядов. Код Грея используется только для снятия информации с датчика. Для дальнейшей обработки информации код Грея переводится в двоичный позиционный по следующему алгоритму:
Каждый i-й, считая с левого старшего, разряд двоичного позиционного кода любого числа равен сумме по модулю 2 i-го и всех более левых разрядов этого числа, представленного кодом Грея.
Арифметические операции над двоичными кодами
Сложение
Сложение двоичных кодов производится побитно на основе следующих соотношений: 0+0=0; 0+1=1; 1+0=1; 1+1=0 и 1 - в перенос (в результате 10).
Например:
1 перенос 111 переносы
+9 +1001 +7 +0111
5 0101 1 0001
14 1110 8 1000
Вычитание
Это действие можно выполнять так же как и в десятичных кодах, занимая 1 старшего разряда (производить заем):
1 заем
- 10 -1010
5 0101
5 0101
Но для многоразрядных кодов процедура очень осложняется, когда приходится занимать не из соседнего старшего разряда, а из более старших разрядов. Поэтому в цифровой технике вводится понятие дополнительного кода, который позволяет совершенно одинаково выполнять операции сложения и вычитания. Для указания знака кода используется самый старший его разряд. В положительном коде старший разряд равен нулю, а в отрицательном – единице. Дополнительный код положительного числа совпадает с его прямым (обычным) кодом. Дополнительный код отрицательного числа получается путем инверсии прямого кода и добавления к результату единицы.
Например: прямой и дополнительный код числа +5 равен 0101, дополнительный код числа –5 равен +1 = 1010+1 = 1011.
Старший разряд "1" указывает, что код представляет отрицательное число. Код называется дополнительным потому, что он дополняет n-разрядный прямой код до значения 2n. В приведенном примере 0101+1011 = 100002 = 24.
Имеется другой способ определения дополнительного кода, несколько быстрее приводящий к цели. Разряды прямого кода переписываются справа налево, начиная с младшего разряда D0 до первой встретившейся 1, остальные разряды инвертируются.
Например 10110пр = 01010доп.
Вычитание двоичных кодов сводится к сложению положительных и отрицательных кодов и выполняется как сложение их дополнительных кодов. При выполнении этой операции очень важно проследить чтобы результат действия над кодами не исказил знаковый разряд. Поэтому должен быть определенный запас нулевых разрядов, расположенных после знакового разряда. В нижеприведённых примерах операнды занимают всего 4 разряда, но будем использовать восьмиразрядные коды.
Дата добавления: 2016-11-29; просмотров: 2322;