Как мы все знаем, обычно отрицательные числа в памяти представляют собой два дополнительных числа вроде этого
from x to ~x + 1
и чтобы вернуться, мы не делаем очевидных вещей вроде
~([~x + 1] - 1)
но вместо этого мы делаем
~[~x + 1] + 1
может кто-нибудь объяснить, почему это всегда работает? Я думаю, что могу доказать это с помощью 1-битных, 2-битных, 3-битных чисел, а затем использовать математическую индукцию, но это не помогает мне понять, как именно это работает.
Спасибо!