В представлении дополнения к двум уникальным свойством двух степеней является то, что они состоят из всех 0 битов, кроме k-го бита, где n = 2 ^ k:
base 2 base 10
000001 = 1
000010 = 2
000100 = 4
...
Чтобы получить отрицательное значение в дополнении до двух, вы переворачиваете все биты и добавляете один. Для степеней двойки это означает, что вы получаете группу 1 с слева до включающего 1 бита, который был в положительном значении, а затем группу 0 с справа:
n base 2 ~n ~n+1 (-n) n&-n
1 000001 111110 111111 000001
2 000010 111101 111110 000010
4 000100 111011 111100 000100
8 001000 110111 111000 001000
Вы можете легко увидеть, что результат столбцов 2 и 4 будет таким же, как столбец 2.
Если вы посмотрите на другие значения, отсутствующие на этом графике, вы поймете, почему это не относится ни к чему, кроме степеней двух:
n base 2 ~n ~n+1 (-n) n&-n
1 000001 111110 111111 000001
2 000010 111101 111110 000010
3 000011 111100 111101 000001
4 000100 111011 111100 000100
5 000101 111010 111011 000001
6 000110 111001 111010 000010
7 000111 111000 111001 000001
8 001000 110111 111000 001000
n & -n будет (для n> 0) иметь только 1 установленный бит, и этот бит будет самым младшим установленным битом в n. Для всех чисел, имеющих степени двойки, младший значащий установленный бит является единственным установленным битом. Для всех остальных чисел задано более одного бита, из которых в результате будет задано только наименее значимое.