
Для упрощения арифметических операций числа записываются в специальной форме, называемой машинными кодами. Эти коды позволяют:
свести операцию вычитания к операции сложения; автоматически получать знак суммы (разности); выявлять переполнение разрядной сетки. Существуют следующие коды: прямой (ПК); обратный (ОК); дополнительный (ДК).
Положительные числа во всех кодах записываются одинаково. Наиболее просто числа записываются в ПК, для этого достаточно в знаковом разряде записать знак («О» или «1»), а цифровые разряды оставить без изменения. Например, для чисел с ФТ прямой код чисел получается следующим образом:
А2 = +1001010 -» Апк = 0 1001010;
А2 = -1001010 -> Апк = 1 1001010.
Прямой код числа А определяется следующим соотношением:
Апк = А при А > 0;
Апк = Z+ \А\ при А<0,
где Z — вес знакового разряда.
При сложении чисел с разными знаками фактически необходимо выполнять вычитание, а эта операция является менее удобной, чем сложение. Обратный и дополнительный коды позволяют свести операцию вычитания к операции сложения. В ПК этого сделать нельзя.
Обратный код отрицательного числа получают из ПК инвертированием цифровых разрядов. Положительные числа в ОК записываются так же, как и в прямом. Например:
Л2 = +1011011 -» Апк = 0 1011011 -^Лок = 0 1011011;
А2 = -1011011 -» Апк = 1 1011011 -> Аок = 1 0100100.
Обратный код числа А определяется следующим образом: если А — дробное число с ФТ,
Аок = 2 _ 2-(-D - \А\; (2.1)
если А — целое число с ФТ,
Аок = 2" - 1 - \А\,
где п — разрядность числа.
Особенностью ОК является различное представление цифровых разрядов положительного и отрицательного нулей:
А2 = +0000000 -» Апк = 0 0000000 -> Аок = 0 0000000;
А2 = -0000000 -» Апк = 1 0000000 -> Аок = I 1111111.
Для получения ПК отрицательного числа из ОК цифровые разряды инвертируют:
Аок= 1 0011101 -» Лпк= 1 1100010 -> Л2 = -1100010.
Дополнительный код отрицательного числа получают из ОК прибавлением единицы к младшему разряду. Положительные числа в ДК записываются так же, как и в прямом. Например:
30
А2 = + 1110101 -»ЛПК = 0 1110101 -> Лок = = 0 1110101 ->ЛДК = 0 1110101;
Л2 = - 1110101 -> Лпк = 1 1110101 -» Лок = = 1 0001010 -» Аак = 1 0001011.
Дополнительный код числа А определяется из формулы (2.1) с учетом прибавления единицы младшего разряда:
Аок= 2 - \А\, если А — дробное число с ФТ;
док_ 2" - \А\, если А — целое число с ФТ.
Нуль в ДК имеет единственное представление:
А2 = + 0000000 -» Апк- 0 0000000 -» Аок = = 0 0000000 -» Адк= 0 0000000;
А2 = -0000000 -» Апк= 1 0000000 -> Аок = = 1 1111111 -^Адк= 0 0000000.
Для получения ПК отрицательного числа из ДК сначала инвертируются цифровые разряды, а затем к младшему разряду прибавляется единица:
Лдк = 1 0001011 -> 1 1110100 -» Апк = 1 1110101 -> ^2 = -1110101.
Обратный и дополнительный коды с точки зрения простоты выполнения операций над числами равноценны. Однако операции с удвоенной разрядностью в ДК выполняются проще, поэтому его чаще используют.