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 ...