Décodage des valeurs binary16
Décodez un mot binary16 non signé de 16 bits en valeur numérique.
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)| Vérifiez avant d’appliquer | Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications. |
|---|---|
| Modèles | Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément. |
| Projet | Testez les zéros signés, subnormaux, infinis et NaN, en refusant les booléens et mots hors plage sans préserver la charge des 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)Examinez les formats numériques compacts au-delà des valeurs ordinaires
HalfJunia est un logiciel de programmation assistée par IA sous Windows pour examiner les modifications du code source sensibles à la représentation. Lorsqu’une valeur décodée semble incorrecte, fournissez le mot d’origine, le résultat observé et l’interprétation attendue dans la conversation du projet. Demandez au modèle connecté d’examiner le code pertinent avant de modifier une branche pouvant aussi traiter des valeurs spéciales.
Par exemple, une tâche de décodage binary16 peut nécessiter de traiter explicitement le zéro signé, les valeurs sous-normales, les infinis et les NaN. Précisez que l’entrée est un mot non signé de 16 bits et si la préservation des charges utiles des NaN est hors périmètre. La tâche dispose alors d’un contrat délimité que le réviseur peut comparer à l’implémentation proposée et à son code appelant.
Vérifiez des mots représentatifs de chaque catégorie dans votre environnement. Pour le zéro signé, utilisez une observation qui distingue réellement le signe ; pour NaN, utilisez le test de catégorie approprié plutôt que l’égalité ordinaire. Examinez séparément le rejet des entrées booléennes ou hors plage. Quelques valeurs finies familières sont utiles, mais ne sollicitent pas les branches les plus susceptibles d’être oubliées.
HalfJunia se connecte aux points de terminaison compatibles OpenAI ou Anthropic pris en charge, avec des identifiants si nécessaire. Si votre fournisseur propose un modèle d’IA sans filtre, vous pouvez le sélectionner pour la conversation de programmation. Ses restrictions, sa capacité de contexte et ses outils dépendent du modèle et du serveur, et son explication reste une proposition à vérifier.
Préparer une révision de format numérique
Quels éléments joindre à une valeur décodée inattendue ?
Donnez le mot d’entrée exact, la catégorie attendue et le résultat observé, ainsi que le code appelant qui l’utilise. Évitez de vous appuyer uniquement sur une chaîne d’affichage arrondie. La discussion du code nécessite assez de détails pour distinguer la gestion de la représentation de la mise en forme ultérieure dans l’interface.
L’égalité ordinaire peut-elle vérifier toutes les valeurs spéciales ?
Non. Choisissez des vérifications adaptées à la catégorie, notamment une observation sensible au signe pour zéro et un test NaN approprié. Énoncez ces attentes dans la tâche et exécutez les tests dans votre environnement réel afin d’évaluer le décodeur proposé au-delà de l’égalité ordinaire de valeurs finies.
Faut-il supposer la préservation des charges utiles des NaN ?
Uniquement s’il s’agit d’une exigence explicite prise en charge par l’implémentation. La tâche de décodage illustrative ne préserve pas ces charges utiles. Si le code utilisateur en a besoin, décrivez ce contrat distinct avant d’accepter une proposition ne renvoyant qu’une catégorie ou une valeur numérique.
Pourquoi inclure une entrée booléenne dans les tests de rejet ?
Certaines relations entre types peuvent l’admettre lors d’une vérification trop large des entiers. Si votre contrat exige une véritable valeur de mot et exclut les booléens, dites-le explicitement. Vérifiez cette distinction ainsi que la plage acceptée plutôt que de vous fier à une description informelle du type.
HalfJunia · Mis à jour 2026-10-25