Decodificación de valores binary16
Decodifica una palabra binary16 sin signo de 16 bits en un valor numérico.
from math import copysign, ldexp
def binary16_value(word):
if type(word) is not int or not 0 <= word <= 65535:
raise ValueError("binary16.word")
sign = -1.0 if word & 0x8000 else 1.0
exponent, fraction = (word >> 10) & 31, word & 1023
if exponent == 31:
return copysign(float("nan") if fraction else float("inf"), sign)
value = ldexp(fraction, -24) if exponent == 0 else ldexp(1024+fraction, exponent-25)
return copysign(value, sign)| Revisa antes de aplicar | Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios. |
|---|---|
| Modelos | Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado. |
| Proyecto | Prueba ceros con signo, subnormales, infinitos y NaN, rechazando booleanos o palabras fuera de rango sin conservar la carga de NaN. |
from math import copysign, ldexp
def binary16_value(word):
if type(word) is not int or not 0 <= word <= 65535:
raise ValueError("binary16.word")
sign = -1.0 if word & 0x8000 else 1.0
exponent, fraction = (word >> 10) & 31, word & 1023
if exponent == 31:
return copysign(float("nan") if fraction else float("inf"), sign)
value = ldexp(fraction, -24) if exponent == 0 else ldexp(1024+fraction, exponent-25)
return copysign(value, sign)Revisa los formatos numéricos compactos más allá de los valores habituales
HalfJunia es un software de programación con IA para Windows con el que abordar cambios de código sensibles a la representación. Cuando un valor decodificado parezca incorrecto, lleva a la conversación del proyecto la palabra original, el resultado observado y la interpretación esperada. Pide al modelo conectado que examine el código pertinente antes de cambiar una rama que también podría atender valores especiales.
Por ejemplo, una tarea de decodificación binary16 puede requerir un tratamiento explícito del cero con signo, los valores subnormales, los infinitos y los NaN. Indica que la entrada es una palabra de 16 bits sin signo y si conservar la carga útil de los NaN queda fuera del requisito. La tarea tendrá entonces un contrato delimitado que un revisor podrá comparar con la implementación propuesta y el código que la utiliza.
Comprueba palabras representativas de cada categoría en tu propio entorno. Para el cero con signo, usa una observación que distinga realmente el signo; para NaN, una comprobación de categoría adecuada en vez de la igualdad habitual. Revisa por separado el rechazo de entradas booleanas o fuera de rango. Unos cuantos valores finitos conocidos son útiles, pero no ejercitan las ramas que más fácilmente pasan inadvertidas.
HalfJunia se conecta a endpoints compatibles con OpenAI o de Anthropic admitidos, con credenciales cuando sean necesarias. Donde tu proveedor ofrezca un modelo de IA sin filtros, puedes seleccionarlo para la conversación de programación. Sus restricciones, capacidad de contexto y herramientas siguen dependiendo del modelo y del servidor, y su explicación sigue siendo una propuesta que hay que verificar.
Preparar la revisión de un formato numérico
¿Qué evidencia debe acompañar a un valor decodificado inesperado?
Proporciona la palabra de entrada exacta, la categoría esperada y el resultado observado, junto con el código que lo utiliza. Evita basarte solo en una cadena de visualización redondeada. El análisis del código necesita suficiente detalle para distinguir el tratamiento de la representación del formato posterior en la interfaz.
¿Puede la igualdad habitual verificar todos los valores especiales?
No. Elige comprobaciones adecuadas para cada categoría, incluida una observación sensible al signo para el cero y una prueba de NaN apropiada. Indica esas expectativas en la tarea y ejecútalas en tu entorno real para evaluar el decodificador propuesto más allá de la igualdad finita habitual.
¿Debe darse por supuesta la conservación de la carga útil de los NaN?
Solo si es un requisito explícito admitido por la implementación. La tarea ilustrativa de decodificación no conserva las cargas útiles. Si el código consumidor las necesita, describe ese contrato independiente antes de aceptar una propuesta que solo devuelva una categoría o un valor numérico.
¿Por qué incluir entradas booleanas en los casos de rechazo?
Las relaciones entre tipos de algunos lenguajes pueden admitirlas mediante una comprobación amplia de enteros. Si tu contrato exige un valor de palabra real y excluye booleanos, indícalo explícitamente. Verifica esa distinción junto con el rango aceptado, en vez de confiar en una descripción informal del tipo.
HalfJunia · Actualizado 2026-10-25