Комплимент Two - это популярная форма представления чисел, где половина двоичного диапазона отрицательна. Он может использоваться для всех арифметических операций c, а не только для сложения и вычитания. Проще говоря, «имеет смысл» хранить числа таким образом. Причиной этому могут быть алгоритмы сжатия, в которых вы хотите избежать использования слишком большого количества битов (например, зигзагообразного формата и т. Д.).
Например, для умножения двух 8-битных чисел "5" и "- 3 ", которые представлены в двоичном виде как 101
и 11111101
, компьютер может разбить это на проблему проверки каждого бита в одном множителе и суммирования другого фактора, смещенного на каждый установленный бит:
5<<0
+ 5<<2 (skipping 5<<1, because that bit is not set)
+ 5<<3
+ 5<<4
+ 5<<5
+ 5<<6
+ 5<<7
------
1265
1265
переносится в 241
в 8-битном пространстве, которое является двоичным 11110001
, что является дополнением до двух для -15
. На некоторых старых компьютерах умножение занимало больше времени с тем, сколько битов числа установлено, вероятно, из-за требуемой дополнительной арифметики c.
Деление становится немного более сложным и является самым дорогим арифметическим c операции, но суть здесь в том, что комплименты двоих - это способ хранения чисел, с которыми легко работать компьютерам, поскольку для выполнения бита знака перед выполнением большинства операций не требуется дополнительная логика c.
Другими словами, «нет», оно используется не только для сложения и вычитания.