## Proof that the decrement operator can be achieved [exclusively with binary operations]

A friend of mine was recently telling me how he’d done an electronics assignment where for extra credit they had to create an in-place decrement operator (by that I mean not taking the approach of taking the 2s complement of -1 and adding it to a number). This sounded cool and seemed like the way the ALU would do it to save allocation overhead and space.

Here’s the identity he told me about:

$x - 1 == \texttt{~}(-x)$

where:
“~” represents the binary complement
“-“ represents the binary negative, aka 2s complement of the number.

Looks really bizarre but feels like it should make sense. I rooted about on Google search to find the proof, but either couldn’t find it, or more likely didn’t have my search terms fine tuned! (See http://www.woodmann.com/searchlores/)

Here’s the forward proof I came to. (using ‘=’ to mean comparison not assignment here)

$x = x$ $x = (x+1) -1$

due to 2s complement we know that $$\texttt{~}x +1 = -x$$, therefore $$x+1 = -(\texttt{~}x)$$, substituting this gives

$x = -(\texttt{~} x) - 1$

as we know the negation is 2s complement of the brackets, therefore

$x = \texttt{~}(\texttt{~}x +1) +1$

now sub back our other formula from above

$x = \texttt{~}(-x) +1$

and here we are

$x -1 = \texttt{~}(-x)$

If you notice any errors above, or if you just need to “Throw some knowledgeballs down the webhills!”, please flame me on the appropriate public channels.