Lo sé, la pregunta parece ser extraña. Los programadores a veces piensan demasiado. Por favor sigue leyendo ...
En CI uso signed
y unsigned
enteros mucho. Me gusta el hecho de que el compilador me advierte si hago cosas como asignar un entero con signo a una variable sin signo. Recibo advertencias si comparo enteros firmados con enteros sin signo y mucho más.
Me gustan estas advertencias. Me ayudan a mantener mi código correcto.
¿Por qué no tenemos el mismo lujo para las carrozas? Una raíz cuadrada definitivamente nunca devolverá un número negativo. También hay otros lugares donde un valor flotante negativo no tiene sentido. Candidato perfecto para una carroza sin firmar.
Por cierto, no estoy realmente interesado en el solo bit extra de precisión que podría obtener al eliminar el bit de signo de los flotadores. Estoy súper feliz con float
s como lo están ahora. Solo me gustaría marcar un flotador como sin firmar veces y obtener el mismo tipo de advertencias que obtengo con los enteros.
No conozco ningún lenguaje de programación que admita números de punto flotante sin signo.
¿Alguna idea de por qué no existen?
EDITAR:
Sé que la FPU x87 no tiene instrucciones para lidiar con flotadores sin firmar. Solo usemos las instrucciones de flotación firmadas. El mal uso (por ejemplo, ir por debajo de cero) podría considerarse un comportamiento indefinido de la misma manera que el desbordamiento de enteros con signo no está definido.