1.3. Представление отрицательных чисел, коды двоичных чисел
В цифровых вычислительных машинах в силу определенных схемотехнических ограничений операция сложения реализуется значительно проще, чем операция вычитания. Поэтому операцию вычитания заменяют эквивалентной по результату операцией сложения специально подобранных кодов: прямой, обратный, дополнительный и модифицированный дополнительный.
Прямые коды
При использовании позиционного способа изображения чисел с естественными весами разрядов, в качестве цифр В-ичной системы счисления должны быть выбраны В последовательных целых чисел, одно из которых должно быть нулем.
Пусть наименьшая из цифр есть а1, наибольшая из цифр aВ (где aВ = a1 + B – 1). Если вес старшего разряда есть d, то все m-разрядные числа, которые можно представить с помощью этих цифр, заключены в интервале от

то будет получен симметричный относительно нуля диапазон чисел.
Однако такое решение возможно только при нечетном основании В системы счисления [например, в троичной системе в качестве цифр могут употребляться числа (–1), (0), (+1), в пятеричной системе – числа (–2), (–1), (0), (+1), (+2)]. Так как aB = а1 + B – 1, то при четном B не может соблюдаться условие а1 = – aB (при соблюдении условия, что все цифры соответствуют целым числам).
В системах счисления с четными основаниями (двоичной, десятичной и т. д.), строго говоря, нельзя полностью выдержать позиционный способ изображения чисел с естественными весами разрядов и при этом получить симметричный относительно нуля диапазон чисел.
Способ, которым мы пользуемся повседневно (в десятичной системе), состоит в том, что в качестве цифр В-ичной системы выбираются В неотрицательных целых чисел 0, 1, 2,..., (В – 1) и к каждому числу приписывается один специальный двоичный разряд: разряд алгебраического знака с допустимыми символами для него «+» и «–». Числа, выраженные с помощью т разрядов В-ичной системы, заключены при этом в интервале от 0 до
![]()
где d – вес старшего разряда. Этими разрядами записывается абсолютная величина числа. Разряду алгебраического знака никакого определенного веса приписать нельзя; для того чтобы получить истинное значение числа, нужно абсолютную величину числа умножить либо на (+1), если в разряде знака стоит «+», либо на (–1), если «–». В этом, собственно, и состоит отступление от позиционного способа изображения чисел.
Такой способ записи чисел называется прямым кодом.
Недостатки этого способа связаны с тем, что правила счета оказываются разными для положительных и отрицательных чисел. Правила счета, которые сформулированы для позиционной записи чисел с естественными весами разрядов, справедливы лишь по отношению к абсолютной величине числа. Если же рассматривать числа целиком, вместе с алгебраическим знаком, то для перехода от некоторого числа к ближайшему большему нужно применить либо правило прямого счета (если число равно нулю или положительно), либо правило обратного счета (если данное число отрицательно). Для того чтобы перейти от некоторого числа к ближайшему меньшему, нужно применить либо правило обратного счета (если число положительно), либо правило прямого счета (если число отрицательно или равно нулю).
Вытекающие из правил счета правила выполнения сложения и вычитания оказываются существенно различными при разных комбинациях алгебраических знаков чисел. Например, правило сложения двух положительных чисел сильно отличается от правила сложения положительного числа с отрицательным; эта последняя операция тоже может выполняться различно в зависимости от того, какое из чисел больше по абсолютной величине.
Даже простое перечисление этих хорошо известных и, по существу, тривиальных правил показывает, что использование общепринятого способа изображения отрицательных чисел может привести к существенному усложнению схемы вычислительных устройств.
Поэтому в вычислительных машинах для систем счисления с четными основаниями наряду с прямыми кодами часто используются другие способы записи отрицательных чисел.