Estoy estudiando la posibilidad de representar números fraccionarios como valores de punto flotante. Va a ser una representación de 8 bits. En algún lugar del texto, se dice que:
«Usamos el primer bit para representar el signo (1 para negativo, 0 para positivo), los siguientes cuatro bits para la suma de 7 y el exponente real (sumamos 7 para permitir exponentes negativos), y los últimos tres bits para la «parte fraccionaria» de la mantisa
Ahora la pregunta es: ¿Por qué se debe agregar «7» -y no otro valor- al exponente real?
Comentarios
- ¡Bienvenido a CS.SE! El texto insinúa por qué, entre paréntesis. Por cierto, si ' no entiende la explicación en un texto, ' suele ser útil buscar una explicación diferente del tema. . Hay muchos recursos en coma flotante.
- Entonces, ¿por qué debería agregarse 7?
- Si ' ha entendido la respuesta a su Primera pregunta, te animo a editar tu publicación para mostrar lo que entiendes.
Responder
Con 4 bits puede representar 16 valores diferentes: 0,1, …, 15. Si desea permitir exponentes negativos, tiene sentido tomar (aproximadamente) la mitad de los valores posibles para indicar un exponente negativo. Al sumar 7 al exponente, mapeas los valores -7, -6, …, 0,1, …, 8 al rango representable. También puede buscar complemento de dos «.
Comentarios
- Entonces, agregar 7, asigna -7, -6, …, – 1 a sus valores positivos correspondientes y agregar un valor superior a 7 da como resultado un valor fuera de rango que es incorrecto. Por la misma razón, agregar menos de 7 al exponente no ' t soluciona el problema. Gracias, ' tengo lo que estaba buscando.
- Agregar diferentes números cambia qué exponentes negativos y positivos admites. Es ' una decisión de diseño. Quizás solo admitir -1 sea suficiente para tu aplicación.
- Sí , tienes razón. Esta es una decisión de diseño que el instructor ha implementado a través del tutorial y no es ' una restricción estricta.
- La decisión de usar un desplazamiento en lugar del complemento de 2 ' s, el IIRC debía mantener el inverso del valor más pequeño más pequeño que el va más grande lue, es decir, para evitar desbordes. En otras palabras, se eligió cuidadosamente.
- @KWillets: El desplazamiento también permite que el cero se represente como ceros y permite usar comparaciones de enteros para comparar números de punto flotante (excluyendo el bit de signo)