Шестнадцатеричный код
Он образуется аналогично восьмеричному, но объединяются четыре разряда, начиная с младшего, и записываются в виде одного символа. Самое большое число, которое можно записать четырьмя двоичными разрядами 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
50101 10001
14 1110 8 1000
Вычитание
Это действие можно выполнять так же как и в десятичных кодах, занимая 1 старшего разряда (производить заем):
1 заем
- 10 -1010
50101
5 0101
Но для многоразрядных кодов процедура очень осложняется, когда приходится занимать не из соседнего старшего разряда, а из более старших разрядов. Поэтому в цифровой технике вводится понятие дополнительного кода, который позволяет совершенно одинаково выполнять операции сложения и вычитания. Для указания знака кода используется самый старший его разряд. В положительном коде старший разряд равен нулю, а в отрицательном – единице. Дополнительный код положительного числа совпадает с его прямым (обычным) кодом. Дополнительный код отрицательного числа получается путем инверсии прямого кода и добавления к результату единицы.
Например: прямой и дополнительный код числа +5 равен 0101, дополнительный код числа –5 равен +1 = 1010+1 = 1011.
Старший разряд "1" указывает, что код представляет отрицательное число. Код называется дополнительным потому, что он дополняет n-разрядный прямой код до значения 2n. В приведенном примере 0101+1011 = 100002 = 24.
Имеется другой способ определения дополнительного кода, несколько быстрее приводящий к цели. Разряды прямого кода переписываются справа налево, начиная с младшего разряда D0 до первой встретившейся 1, остальные разряды инвертируются.
Например 10110пр = 01010доп.
Вычитание двоичных кодов сводится к сложению положительных и отрицательных кодов и выполняется как сложение их дополнительных кодов. При выполнении этой операции очень важно проследить чтобы результат действия над кодами не исказил знаковый разряд. Поэтому должен быть определенный запас нулевых разрядов, расположенных после знакового разряда. В нижеприведённых примерах операнды занимают всего 4 разряда, но будем использовать восьмиразрядные коды.
Рассмотрим различные ситуации при вычитании.
1) Вычислим в двоичных кодах результат операции 7-5 = 7+(-5).
Определим дополнительный код –5 = -00000101пр = 11111011доп.
Тогда 710-510 = 00000111доп+11111011доп = 1.00000010доп = 00000010пр = 210
Возникший перенос 1 в разряд D8 отбрасывается. Знаковый разряд D7 = 0, поэтому результат – положительное число 2, у которого прямой код такой же, как и дополнительный.
2) Определим результат операции 510-710 = 00000101пр-00000111пр = 00000101доп+11111001доп = 11111110доп = -00000010пр=-210
Здесь D7 = 1, результат отрицательный, поэтому дополнительный код переводится в прямой. Это выполняется по тому же правилу, что и перевод прямого кода в дополнительный.
3) Найдём –510-710 = 11111011доп+11111001доп=1.11110100доп = -00001100пр = -1210.
Умножение
Операция выполняется также как и для десятичных кодов: множимое умножается на каждый разряд множителя и результаты складываются со сдвигом. Можно умножать, начиная с младших разрядов со сдвигом влево, или со старших со сдвигом вправо.
610* 710 111 111
*110 *110
000 111
111 111
*111 * 000
1010102 = 4210 101010
Числа со знаком умножаются в прямом коде, а знак определяется как сумма по модулю 2 знаковых разрядов.
Деление
Выполняется как вычитание со сдвигом. Например:
18:6 = 3 22:4 = 5,5
10010 : 110 10110 : 100
- 110 11 - 100 101,1
110 110
- 110 - 100
000 10,0
- 100
000
Здесь дробная часть представляет отрицательные степени числа 2.
Например: степени 2 2 1 0 -1 -2
Код 110,11 = 4+2+0,5+0,25 = 6,75.
Дата добавления: 2016-05-25; просмотров: 1033;