Если вы возьмете определение -x = ~x + 1
, то если мы представим x
в виде строки a10 k (строка a
, за которой следует 1, за которым следует k нулей), то:
-(a10^k) =
// by definition
~(a10^k) + 1 =
// complement distributes over concatenation
~a01^k + 1 =
// carry through the 1s and set the 0
~a10^k
Конечный результат, ~a10^k
, означает «дополнить левую сторону, пока (не включая) самую правую 1».
Это доказательство не выполнялось для x = 0
, так какон не может быть записан в форме a10 k , эквивалентность по-прежнему верна: нет части, которую можно дополнить, поскольку нет самой правой 1, поэтому результат снова равен нулю, что является правильным.