Saltar al contenido

Convertir decimal negativo a binario

Posterior a observar en diversos repositorios y páginas webs al terminar encontramos la respuesta que te mostramos ahora.

Solución:

Estás confundido porque olvidaste que debe haber algo que distinga los números positivos de los negativos.

Digamos que desea almacenar números no negativos en 8 bits.

  • 00000000 es 0,
  • 00000001 es 1,
  • 00000010 es 2,
  • 00000011 es 3,
  • 00000100 es 4,
  • 11111111 es 255

Entonces puede almacenar números en el rango 0-255 en 8 bits. 255 = 28 – 1. (2 es la base del sistema binario, 8 es el número de bits, 1 se resta porque queremos contar 0)

Ahora, supongamos que también desea almacenar números negativos. ¿Cómo podemos lograr eso? Podemos dedicar un bit para firmar. Si este bit es 0 luego interpretamos otros 7 bits como un número positivo, de lo contrario, como un número negativo. Es mejor usar el bit más significativo para el signo porque facilita algunas operaciones.

  • Enfoque trivial: Simplemente lea un número tal cual:

    • 00000001 == 1 y 10000001 == -1
    • 01000010 == 66 y 11000010 == -66
    • 01111111 == 127 y 11111111 == -127
  • Complemento de unos: Para cualquier número xnegar su representación binaria produce una representación binaria de -x. Esto significa que:

    • 00000001 == 1 y 11111110 == -1
    • 01000010 == 66 y 10111101 == -66
    • 01111111 == 127 y 10000000 == -127
  • complemento a dos: Para cualquier número xnegando su representación binaria y sumando 1 se obtiene una representación binaria de -x. Esto significa que:

    • 00000001 == 1 y 11111111 == -1
    • 01000010 == 66 y 10111110 == -66
    • 01111111 == 127 y 1000001 == -127
    • 10000000 == -128

¿Por qué el complemento a dos es el mejor?

  • Porque tiene el rango más amplio: -128…127, mientras que el enfoque trivial y el complemento de uno tienen -127…127
  • El cero está bien definido:
    • Solo en complemento a dos 00000000 es cero
    • En un enfoque trivial tanto 00000000 y 10000000 son cero
    • En complemento de uno ambos 00000000 y 11111111 son cero
  • La suma y la resta son idénticas a los números sin signo, por lo que la CPU no necesita instrucciones adicionales para sumar números con signo.

Tenga en cuenta que si dedicamos el bit más significativo para el bit de signo, entonces no podemos convertir el número a binario sin saber cuántos bits necesitaremos. Por ejemplo, si tenemos 4 bits, entonces el número -5 en un enfoque trivial es 1101en 7 bits sería 1000101. 0001101 (4 bits -5 rellenado con ceros a una longitud de 7 bits) es en realidad 13 (el bit más significativo es 0, por lo que es positivo).

No haré la tarea por ti, pero puedo darte consejos generales:

Para convertir -x para N Representación en complemento a dos de bits largos:

  1. Convertir -x a binario usando complemento a dos.
  2. Rellene a la izquierda con ceros hasta N-1 largo.
  3. Agregue el bit de signo negativo en el lado izquierdo.

Creo que puedes averiguar el resto de esta respuesta. Si tienes más preguntas, deja un comentario.

Comentarios y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *