Para darle la intuición me centraré en la no-números negativos $x,y\ge 0$ y que los números son $k$bits enteros.
1-complenet
Para obtener el 1-complemento de un número $x$ le da la vuelta cada poco en $x$s de la representación binaria $\text{bin}(x)$, 1
$\Leftrightarrow$ 0
. Usted puede hacer lo mismo, restando $x$ desde el número binario que contiene sólo 1
s y es tan largo como $\text{bin}(x)$. Por ejemplo,
111111
-010111
-------
101000
Esto funciona para todos los bits, y no se lleva, por lo que funciona para el conjunto de la representación binaria.
Así se puede describir el 1-complemento de $x$ $c_1(x):=(2^{k+1}-1)-x$ donde $k$ es el número de bits que tiene cada número. Por definición de la 1-complemento hemos $c_1(c_1(x))=x$.
Suponga que $x>y$ (regla 4), por lo tanto, cuando resta, vamos a tener un desbordamiento. Por lo tanto, vamos a añadir $+1$ al resultado, que los rendimientos de
$$ x+c_1(y)+1=x+(2^{k+1}-1)-y+1=(2^{k+1})+(x-y),$$
ya que sólo tenemos en cuenta la primera $k$ bits, 1
en representación $2^{k+1}$ desaparecerá, y llegamos $x-y$.
Supongamos ahora que $x\ge y$ (regla 3). Entonces no hay desbordamiento y
$$ c_1(x+c_1(y))=c_1 (x+(2^{k+1}-1)-y)=c_1(c_1(y-x))=y-x=|x-y|.$$
2-complement
To get the 2-complement of an number $x$ we flip the bits, starting after the right most 1
. This can be interpreted as subtracting $x$ from $2^{k+1}$. Again we look at an example
1000000
-0010100
--------
101100
Until the first 1
we don't have carries, so the bits are just taken from $x$, after the first 1
, we have always a carry, and hence the bits get flipped.
Similarly to the 1-complement let $c_2(x):=2^{k+1}-x$, and again $c_2(c_2(x))=x$.
Assume that $x>y$ (regla 4), esto le da
$$ x+c_2(y)=2^{k+1}-y+x=2^{k+1}+(x-y).$$
De nuevo, el $2^{k+1}$ se desvanece ya que sólo tenemos en cuenta la primera $k$ bits.
Suponga que $x<y$ (regla 3), entonces
$$ c_2(x+c_2(y))=c_2 (x+2^{k+1}-y)=c_2(c_2(y-x))=y-x=|x-y|.$$
Ambos conceptos pueden ser extendidos (en una forma muy natural) para trabajar con números negativos.