Salut!
J'essai de faire une conversion d'entier en binaire sur 32 bits, le prog demande d'entrer un entier, il le convertir en binaire, puis affiche le resultat de la conversion du bit de poids le plus fort (a gauche) au bit de poids le plus faible (a droite)
J'affiche en ligne par bloc de 4 bit pour faciliter la lecture, mais il y a un problème sur le 10eme bit en partant de la droite; si il n'est pas affecté il prend la valeur 135089, mais si l'entier depasse 512 c'est ok.
Que faire?
Voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 #include<stdlib.h> #include<stdio.h> int* bin(int e1) { int* t; unsigned long c,e; int i,k,j; k=0; c=0;i=0; e=e1; t=(int*)malloc(32); c=e/2; while(c!=0) { t[i]=e%2; i++; e=c; c=e/2; } t[i]=e; printf("\nLa valeur binaire de %lu est enregistree:\n",e1); printf("\n"); for(j=31;j>=0;j--) { if(k==4) { printf(" "); k=0; printf("%d",t[j]); } else printf("%d",t[j]); k++; } printf("\n"); return t; } main() { int i,k,z; int* tab; tab=(int*)malloc(32); k=0; printf("Entrer la valeur d'un entier a convertir en binaire:\n"); scanf("%d", &z); tab=bin(z); printf("et elle vaut:\n"); for(i=31;i>=0;i--) { if(k==4) { printf(" "); k=0; printf("%d",tab[i]); } else printf("%d",tab[i]); k++; } printf("\n"); }
voici ce que ca donne qd je le lance pour les valeurs 0, 511 et 512:
Entrer la valeur d'un entier a convertir en binaire:
0
La valeur binaire de 0 est enregistree:
0000 0000 0000 0000 0000 001350890 0000 0000
et elle vaut:
0000 0000 0000 0000 0000 001350890 0000 0000
Entrer la valeur d'un entier a convertir en binaire:
511
La valeur binaire de 511 est enregistree:
0000 0000 0000 0000 0000 001350891 1111 1111
et elle vaut:
0000 0000 0000 0000 0000 001350891 1111 1111
Entrer la valeur d'un entier a convertir en binaire:
512
La valeur binaire de 512 est enregistree:
0000 0000 0000 0000 0000 0010 0000 0000
et elle vaut:
0000 0000 0000 0000 0000 0010 0000 0000
Merci ^^
Partager