Hola,
A ver Nuño, la verdad es que me matas con tu explicación. Entiendo lo que dices, y pareciera ser bastante coherente. Pero que yo sepa hay un estándar en como se guardan los números. Este estándar establece un formato adecuado, y casualmente se destina un campo para indicar si el número es positivo o negativo, parecido al formato que se ha definido para los números flotantes. La diferencia respecto a éste es que no posee campos para exponentes sino un campo para el número en si:
Código:
+-+--- ... ---+
| | |
+-+--- ... ---+
EDITO:
El estándar indica que los números negativos están expresados en complemento-2. Y resulta ser estos complementos SIEMPRE tienen un 1 en el campo destinado al signo. Las rutinas INVIERTEN este campo, y naturalmente deberá complementar el resto.
En donde si me corrijo es en haber dicho que ABS y FABS únicamente alterar el campo de signo. Pero vamos, que realizar el complemento-2 del número es una rutina más que normal para la máquina por lo que no deberíamos preocuparnos demasiado en bajarnos a estos niveles.
No nos deberíamos complicar demasiado... ya Abs() nos hace fácil la cosa.
Saludos,