2010-08-10 20 views
10

Actualmente estoy leyendo un libro sobre "poco tocar el violín" y aparece la siguiente fórmula:x-y = x + 1 + ¬y problema

x-y = x+¬y+1 

Pero esto no parece funcionar. Ejemplo:

x = 0100 
y = 0010 
x-y = 0010 
¬y = 1101 
¬y+1 = 1110 
x+1110 = 10010 

Pero 10010 != 0010...

Cuando cometí un error (si los hay)?

(el libro es "Hacker's Delight" de Henry S. Warren.)

+1

Tenga en cuenta que esto no es tanto "poco tocar el violín", ya que es [ "la definición de la resta"] (http://en.wikipedia.org/wiki/ Two% 27s_complement) –

Respuesta

23

¡Solo tiene un sistema de cuatro bits! Ese extra 1 a la izquierda de su resultado final no puede existir. Debe ser:

x = 0100 
y = 0010 
~y = 1101 
~y + 1 = 1110 
x + 1110 = 0010 

El otro bit se desborda y no forma parte de su resultado. Es posible que desee leer en two's complement arithmetic.

+0

Muchas gracias :) Buena explicación. Gracias a todos los demás también. – 0x90

2

Usted está llevando el bit adicional. En computadoras reales si desborda la palabra, el bit desaparece. (en realidad se guarda en una bandera de acarreo).

2

Suponiendo que los números están limitados a 4 bits, entonces el quinto 1 se truncará, dejándolo con 0010.

1

Todo se trata de desbordamiento. Sólo tiene cuatro bits, así que no es 10010, pero

0010.
1

sólo para añadir a las respuestas, en el sistema de complemento a 2:

~x + 1 = -x 

Say x = 2. En 4 bits, eso es 0010.

~x = 1101 
~x + 1 = 1110 

Y es 1110 -2

Cuestiones relacionadas