Decimal to binary
dx3d
Messages postés
68
Date d'inscription
Statut
Membre
Dernière intervention
-
dx3d Messages postés 68 Date d'inscription Statut Membre Dernière intervention -
dx3d Messages postés 68 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Donc je suis débutant en programmation et j'ai essayé de faire un simple code en c qui pourrait me donné la conversion binaire d'un nombre décimale, mais je me retrouve toujours avec un résultat pas tout à fait binaire, par exemple j'essaie pour 536(base 10), je me retrouve avec 2146435072 ... Bref voici le code si vous pouviez juste me dire ce qui va pas dessus je vous en serais reconnaissant :/.
Donc je suis débutant en programmation et j'ai essayé de faire un simple code en c qui pourrait me donné la conversion binaire d'un nombre décimale, mais je me retrouve toujours avec un résultat pas tout à fait binaire, par exemple j'essaie pour 536(base 10), je me retrouve avec 2146435072 ... Bref voici le code si vous pouviez juste me dire ce qui va pas dessus je vous en serais reconnaissant :/.
#include <stdio.h> #include <math.h> int main(){ int x,i, a[16]={0}; int n; x=pow(2,i); printf("Veuillez entrer une valeur décimale ( inférieur à 65000 ):"); scanf("%d",&n); for (i=16;i>=0;i--){ if (x<=n){ a[i]=1; n=n-x; } else a[i]=0; } printf("\n"); printf("%d", a[i]); printf("\n"); return 0; }
A voir également:
- Decimal to binary
- Qwerty to azerty - Guide
- Video to video - Télécharger - Conversion & Codecs
- Majuscule to minuscule - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Honestech vhs to dvd - Forum Lecteurs et supports vidéo
5 réponses
Salut,
pourquoi tu utilise la fonction pow?
pire sur une variable non initialisée (i) donc le résulta n'est pas prédictible
et demande toi d'abord comment tu convertirai un nombre en binaire sur papier
ensuite traduit ce que ton code fait sur papier
tu devrai voir la difference
pourquoi tu utilise la fonction pow?
pire sur une variable non initialisée (i) donc le résulta n'est pas prédictible
et demande toi d'abord comment tu convertirai un nombre en binaire sur papier
ensuite traduit ce que ton code fait sur papier
tu devrai voir la difference
Je converti par soustraction, en gros si je prend 536 sur papier et que j'essaie de la convertir j'ai les puissances de deux suivantes
1024 > 536 => 0
512 < 536 => 536 - 512 = 24 => 1
256 =>0
128 =>0
64 =>0
32 =>0
16 < 24 => 24-16 = 8 => 1
8 => 1
4 => 0
2 => 0
1 => 0
résultat = 1000011000; ce qui est un résultat correcte de 536 ( base 10 ) en binaire.
j'ai essayé de faire mon code sous le même principe, donc en prenant les puissances de 2 jusqu'à la puissance de 16 ( qui est dans les alentour de 65000 ) je demande à l'utilisateur de choisir un chiffre entre 0 et 65000 puis tant que la puissance de 2 est supérieur au chiffre choisi on met un 0 dans la case du tableau et dans le cas où la puissance de 2 est inférieur on met un 1 et on fait une soustraction du chiffre n choisi - la dite puissance de 2.
1024 > 536 => 0
512 < 536 => 536 - 512 = 24 => 1
256 =>0
128 =>0
64 =>0
32 =>0
16 < 24 => 24-16 = 8 => 1
8 => 1
4 => 0
2 => 0
1 => 0
résultat = 1000011000; ce qui est un résultat correcte de 536 ( base 10 ) en binaire.
j'ai essayé de faire mon code sous le même principe, donc en prenant les puissances de 2 jusqu'à la puissance de 16 ( qui est dans les alentour de 65000 ) je demande à l'utilisateur de choisir un chiffre entre 0 et 65000 puis tant que la puissance de 2 est supérieur au chiffre choisi on met un 0 dans la case du tableau et dans le cas où la puissance de 2 est inférieur on met un 1 et on fait une soustraction du chiffre n choisi - la dite puissance de 2.
J'ai mis le x à l'intérieur du for, maintenant pour i qui commence a 16 et qui ce réduit jusqu'à 0 on aura x qui aura les valeurs des 2^i.
Mais pour l'initalisation de ces deux variables est ce que c'est obligatoire ? Vu que je leur affecte des valeurs au départ dois je tout de même leur donné une valeur initiale ?
Aussi je crois que mon problème réside dans mon tableau, ce dernier à 16 cases mais lors du printf, seul 10 apparaissent et la valeur ne change pas peut importe la valeur décimale n ! :/
Mais pour l'initalisation de ces deux variables est ce que c'est obligatoire ? Vu que je leur affecte des valeurs au départ dois je tout de même leur donné une valeur initiale ?
Aussi je crois que mon problème réside dans mon tableau, ce dernier à 16 cases mais lors du printf, seul 10 apparaissent et la valeur ne change pas peut importe la valeur décimale n ! :/
demande toi pourquoi ça fonctionne et pas ton code
indice: stockage et index
int main() { int n; scanf("%d", &n); for (int i = 16; i != 0; --i) { if (n >= pow(2.0, i)) { n -= pow(2.0, i); printf("1"); } printf("0"); } return 0; }
indice: stockage et index
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question