Bueno, tal vez entienda que dos complementos hacen que la suma y la resta sean muy agradables, no tiene que preocuparse por la interpretación de los patrones de bits como se firman o no. Una resta aún mejor utiliza la lógica de adición, invierte el segundo operando e invierte el bit de acarreo (invierte y agrega uno para negar).
Pero multiplicar y dividir son una historia diferente y tiene que ver con la extensión de signo. Y la simple naturaleza de las matemáticas elementales.
Si quiero multiplicar dos números de cuatro bits (las letras son bits)
abcd
* efgh
=========
Para no perder ningún bit, necesitaré al menos 8 bits para almacenar el resultado. Para que sea más fácil ver el segundo número, no sabemos si eso es positivo o negativo, pero solo demuestra el problema usando lo que aprendimos en la escuela primaria.
abcd
* 1111
=========
abcd
abcd
abcd
+ abcd
==========
xxxxxxx
cuando se suman, inicialmente es un resultado de 7 bits, pero existe la posibilidad de que un acarreo haga que necesite 8 bits, 0xF veces 0xF sin firma es 0xE1 necesita 8 bits como resultado.
Y aquí está el problema, si esos son números sin firmar, entonces debes rellenar con ceros, si esos son números con firma, entonces debes rellenar con el signo, de modo que si es un uno y sin firmar, se parece a lo que ves arriba Si usa números con signo y a es uno, debe hacerlo
abcd
* 1111
=========
111abcd
11abcd
1abcd
+ abcd
==========
xxxxxxx
O puede pensar que es multiplicar 1111abcd con el segundo operando de cuatro bits.