je le code suivantPourquoi ce code entraîne-t-il 0?
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <stdint.h>
using namespace std;
int main(){
int x;
cin>>x;
uint32_t Ex;
Ex=(x<<1)>>24;
cout<<Ex<<endl;
return 0;
}
mais il donne 0 pour une valeur de x?
Ma tâche est la suivante:
Computation of the biased exponent Ex of a binary32 datum x.
Quelles sont vos entrées? Avez-vous essayé tous les numéros? Quels cas de bord avez-vous essayé? Le code multiplie en réalité x par 2 puis divise le résultat par 2^24. Il faudrait donc que ce soit relativement grand pour être nul. Mais tout nombre supérieur à 2^23 et beaucoup de nombres négatifs ne devraient renvoyer aucun zéro. Notez que c'est une supposition éclairée car je n'ai pas de crayon et de papier à vérifier –