Convertir el binario de magnitud firmada al complemento de 2 firmados

0

Tengo una pregunta simple sobre la conversión de una representación de magnitud firmada a un complemento de 2 firmados.

No tengo dificultad para convertir, por ejemplo, el número binario de 5 bits de magnitud con signo 00100 (4 en la base 10) al complemento de 2 con signo, porque es 00100. Del mismo modo, el número binario de 5 bits de magnitud con signo 10001 (- 1 en la base 10) es 11111 en el complemento de 2 firmados.

Lo que no entiendo es cómo el número binario firmado 10000 (esto sería -0, ¿correcto?) se convierte al complemento de 2. ¿Alguien puede ofrecer alguna idea? Gracias.

    
pregunta HustleN

1 respuesta

1

algunos números como -0 en particular no se pueden representar. ¿Hay alguna diferencia entre +0 y -0? Hay uno o quizás dos (o pocos) números que son un problema y están alrededor de los puntos finales. 10000 siendo menos cero si ve el bit de signo establecido, niega los otros bits, invierta y agregue uno, de modo que 1111 + 1 = 10000 o 0000, quedando con el número 10000 en el complemento de dos, que es lo que -32 no -0. ¿qué pasa con el signo de magnitud 11111 menos 15. 10001, que funciona bien? ¿qué pasa con 00000 que funciona bien? ¿qué pasa con 01111, que funciona bien? así que tienes la única excepción, si el signo es 1 y la magnitud es cero, entonces voltea el signo, de lo contrario niega la magnitud y conserva el signo.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas