Básicamente, estoy confundido en este momento y no puedo encontrar nada útil en stackoverflow o a través de la búsqueda de Google. He estado leyendo acerca de cómo las computadoras almacenan diferentes tipos de datos en formato binario para comprender mejor la programación en C y el conocimiento general sobre informática. Creo que entiendo cómo funcionan los números de coma flotante, pero por lo que entendí, el primer bit delante del punto decimal (o idk del punto binario) no está incluido porque supuestamente siempre es 1, ya que movemos el punto decimal detrás del primer bit. con un valor de 1 de izquierda a derecha. En ese caso, dado que no almacenamos el primer bit, ¿cómo podríamos diferenciar una variable de punto flotante que almacena el valor 1.0 de 0.0?
PD. no dude en editar esta publicación si es necesario. El inglés no es mi primer idioma.
... primer bit delante de ... punto binario ... no está incluido porque supuestamente siempre es 1 ...
No siempre
Con formatos comunes de punto flotante, como float32 , cuando el exponente sesgado es un (0), la mantisa (erróneamente llamada mantisa) tiene un 0 inicial y no 1 . En ese punto, el exponente sesgado también codifica de manera diferente.
"Cero" generalmente se codifica como un patrón de cero bits.
v--- Implied bit 0 11111110 (1) 111_1111_1111_1111_1111_1111 Maximum value (~3.4e38) 0 01111111 (1) 000_0000_0000_0000_0000_0000 1.0 0 00000001 (1) 000_0000_0000_0000_0000_0000 smallest non-zero "normal" (~1.18e-38) 0 00000000 (0) 111_1111_1111_1111_1111_1111 largest "sub-normal" (~1.18e-38) 0 00000000 (0) 000_0000_0000_0000_0000_0001 smallest "sub-normal" (~1.40e-45) 0 00000000 (0) 000_0000_0000_0000_0000_0000 zero-0.0, cuando se admite, es lo mismo que 0.0 con un 1 en el lugar del bit de signo.