la conversión de decimal a binario con signo de

Digamos que quiero convertir «-128» en binario.

Por lo que puedo entender, puedo obtener la representación binaria de «128», invertir los bits y, a continuación, añadir 1.

Para 128 = 10000000

Por lo que el «inverso» es 01111111

Así y «01111111» + «1» = «10000000» que es «-0» ¿no?

Mi libro de texto hace que este parezca tan fácil, pero no puedo averiguar lo que estoy haciendo mal. Gracias por la ayuda.

InformationsquelleAutor Michael | 2011-01-18

2 Kommentare

  1. 7

    Que No, que definitivamente -128 (en complemento a dos de todos modos, que es lo que estamos hablando, dado que su descripción de la negación de los números). Es sólo -0 por el signo/magnitud de la representación de los números negativos.

    Ver esta respuesta para más detalles sobre las dos representaciones más el tercero que C permite, un complemento, pero voy a copiar un fragmento de allí para mantener esta respuesta como autónomo posible.


    Para obtener la representación negativa de un número positivo, usted:

    • invertir todos los bits, a continuación, agregue una de complemento a dos.
    • invertir todos los bits de un complemento.
    • invertir sólo el bit de signo por signo/magnitud.

    Usted puede ver esto en la siguiente tabla:

    number | twos complement     | ones complement     | sign/magnitude
    =======|=====================|=====================|====================
         5 | 0000 0000 0000 0101 | 0000 0000 0000 0101 | 0000 0000 0000 0101
        -5 | 1111 1111 1111 1011 | 1111 1111 1111 1010 | 1000 0000 0000 0101
    

    Usted debe ser consciente de que no hay 128 en 8 bits en complemento a dos números, el valor más grande es de 127.

    Donde los números de pasar el punto medio es donde el «inteligente» las cosas suceden:

    00000000 ->    0
    00000001 ->    1
    : :
    01111110 ->  126
    01111111 ->  127
    10000000 -> -128
    10000001 -> -127
    : :
    11111110 ->   -2
    11111111 ->   -1
    

    ya que la adición del patrón de bits de (por ejemplo) 100 y -1 con una de 8 bits envoltura alrededor de la auto-mágicamente darle 99:

    100+  0 0110 0100
      1-  0 1111 1111
          ===========
          1 0110 0011  99+ (without that leading 1)
    
  2. 1

    Depende de lo que su representación binaria es — queridos complemento, dos complementar, signo-magnitud, o algo más. La «invertir bits y agregar 1» es correcto para dos complementar, que es lo que la mayoría de las computadoras en estos días utilizan internamente para números con signo. En tu ejemplo, «10000000» es el de 8 bits, dos complementos de la representación de -128, que es lo que quieres. No hay tal cosa como -0 en dos complementar.

    De signo-magnitud, se niega moviendo el bit de signo. Para complementar, se niega por invertir todos los bits.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea