2012-02-07 11 views
9

estoy usando 2' complemento para representar un número negativo en forma binariarepresentan un número negativo con una técnica de complemento de 2 '?

Caso 1: número -5

De acuerdo con la 2' técnica de complemento:

Convert 5 a la forma binaria :

00000101, luego voltear los bits

11111010, a continuación, añadir 1

00000001 

=> Resultado: 11111011

Para asegurarse de que esto es correcto, yo volver a calcular a decimal:

-128 + 64 + 32 + 16 + 8 + 2 + 1 = -5 

Caso 2: Número de -240

El Se toman los mismos pasos:

11110000 

00001111 

00000001 

00010000 => recalculate this I got 16, not -240 

¿Estoy entendiendo mal algo?

Respuesta

11

El problema es que está tratando de representar 240 con solo 8 bits. El rango de un número con signo de 8 bits es -128 a 127.

Si en lugar de representarlo con 9 bits, verá usted consigue la respuesta correcta:

011110000 (240) 

100001111 (flip the signs) 
+ 
000000001 (1) 

= 

100010000 

= 

-256 + 16 = -240 
3

El número negativo más bajo que puede expresar con 8 bits es -128, que es 10000000.

El uso de complemento a 2:

 
128 = 10000000 
(flip) = 01111111 
(add 1) = 10000000 

El número negativo más bajo se puede expresar con N bits (con enteros con signo, por supuesto) es siempre - 2^(N - 1).

4

¿Olvidaste que -240 no se puede representar con 8 bits cuando está firmado?

Cuestiones relacionadas