¿El complemento de 2 es la única forma en que se representan los números binarios cantados?

3

Solo he visto mencionar el complemento a 2 prácticamente cada vez que se menciona la representación de números firmados. Sin embargo, he encontrado que también hay otras formas de representar números firmados, son el complemento de 1, el exceso de k y la base -2.

Excepto el complemento de 1, realmente no entiendo cómo funcionan los otros dos. Sin embargo, lo que quiero saber es si estas otras representaciones se han usado alguna vez. Si es así, ¿dónde y por qué? Sé que la fuerza del complemento de 2 es que la suma y la resta se vuelven iguales. Sin embargo, no estoy seguro de los puntos fuertes de los otros métodos mencionados.

    
pregunta quantum231

1 respuesta

5

Todos volvemos a flotar ... ¡de regreso a la tierra de los números de signo-magnitud!

El complemento de Twos se utiliza casi universalmente para la aritmética de enteros por las razones exactas que indicó: la suma y la resta funcionan de la misma manera, los comportamientos se comportan de manera sensata y el desbordamiento firmado también es fácil de detectar.

Sin embargo, la matemática de punto flotante utiliza casi universalmente la representación de magnitud de signo para el número general, principalmente para facilitar las consideraciones de redondeo y eliminar las asimetrías en un rango significativo. Las únicas máquinas que no usan la representación de magnitud de signo para el punto flotante son del tipo prehistórico (incluso cosas como S / 360s, VAXen y Crays que preceden a IEEE 754 usan FP de signo de magnitud). Sin embargo, la ubicuidad de la magnitud de signo IEEE 754 FP también ha tenido un impacto en la aritmética integer , gracias al pequeño proyecto de Brendan Eich llamado JavaScript.

Verás, el tipo aritmético solo de JavaScript es el flotador de doble precisión IEEE 754; afortunadamente, los flotadores IEEE 754 pueden representar números enteros exactamente hasta el ancho significativo. El único problema con esto, sin embargo, es que el uso de IEEE 754 para la matemática de enteros significa que estás atascado con las matemáticas de enteros de signo-magnitud. Así es, los enteros negativos funcionan de forma diferente en JavaScript que en todos los demás idiomas modernos . Piense en esto la próxima vez que escuche a alguien lanzar Node.js ...

    
respondido por el ThreePhaseEel

Lea otras preguntas en las etiquetas