J'essaie de convertir un tableau de 8 bits en un nombre de 0-255 en ajoutant des valeurs en fonction de la position dans le champ.La fonction pow() dans c me donne des résultats erronés
si j'utilise
int array[8]={
0,1,1,0,0,0,0,1
};
int *p = array;
int i;
for (i = 0; i<8; i++){
if(p[i]!=0){
a = pow(2,i);
printf("%i\n",a);
}
};
je reçois:
2
4
128
que les résultats, ce qui serait bon jusqu'à présent. mais si j'utilise
int array[8]={
0,1,1,0,0,0,0,1
};
int *p = array;
int i;
for (i = 0; i<8; i++){
if(p[i]!=0){
a = a + pow(2,i);
printf("%i\n",a);
}
};
Je me place:
2686758
2686762
2686890
quand j'attendre:
134
Qu'est-ce que je fais mal?
Ça sent comme l'utilisation de la variable non initialisée 'a'. Vous ne pouvez pas être certain sans [Exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). –
Ouais ... bas et le vote proche pour afficher le code, mais ne montrant pas les données. Nous ne savons même pas quel est le type 'a' ( –
si 'array [0]' le MSB - c'est-à-dire 128 ou 1? –