>>623
この手の話は「情報論基礎」みたい感じで軽い一冊としてまとまってそう、私も具体的にこれ、と挙げることはできないけど

a を二進数表現としたとき、a の 1 である桁を 0 に換え、a の 0 である桁を 1 に換えてできた数を a の補数と名前をつけることにする。
例:十進数表記の 6 は 二進数表記では 110、よって6 の補数は二進数で 001 、十進数で 1 とする。
例:14 の補数は 17, 221 の補数は 34, 2438 の補数は 1657,

a の補数を ~a とすると上記の補数の決め方により a + ~a = 111111......1111(二進数ですべての桁が1になる数)となる。
なぜならば、a のある桁が1 ならば対応する~a のその桁は 0 になるわけで、両方ともが 1 、あるいは両方ともが0 になることは、補数の決め方を守る限り起こらない。

ここでもう一つの約束ごと、11111...1111 というニ進数で表すとすべての桁が 1 になる数を「-1」を表すこととする。

この二つの約束事を式で表すと

a + ~a = -1
a = -~a - 1
-a = ~a + 1

以上のとおりです。