Problème de "bit" à 1024, en binaire...
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à toutes et à tous,
J'aimerais savoir, je fais un programme en C avec Dev C++. J'ai un but précis, c'est d'avoir un chiffre et de le transformer en binaire. Quand cela est fait, je sonde dans ce binaire, tout les chiffres à "1", et noter leur puissance. Exemple: 2puissance3 = 8 . Cela correspondera au 3ème chiffre à "1" de mon chiffre. Exemple: 9 => 1001, il notera comme cela dans mon programme à la sortie:
8: OK
4: ...
2: ...
1: OK
Mais tout cela je l'ai déjà fait avec mon code ci-dessous. Mon problème est la limite de 1023. Quand je mets un chiffre au-dessus de celui-ci, il me fait un tas de chiffre bizarre et me fausse tout. Dois-je faire des "long" ou "double" etc.. J'ai déjà essayé, mais ça marche pas. Aidez-moi !
J'aimerais savoir, je fais un programme en C avec Dev C++. J'ai un but précis, c'est d'avoir un chiffre et de le transformer en binaire. Quand cela est fait, je sonde dans ce binaire, tout les chiffres à "1", et noter leur puissance. Exemple: 2puissance3 = 8 . Cela correspondera au 3ème chiffre à "1" de mon chiffre. Exemple: 9 => 1001, il notera comme cela dans mon programme à la sortie:
8: OK
4: ...
2: ...
1: OK
Mais tout cela je l'ai déjà fait avec mon code ci-dessous. Mon problème est la limite de 1023. Quand je mets un chiffre au-dessus de celui-ci, il me fait un tas de chiffre bizarre et me fausse tout. Dois-je faire des "long" ou "double" etc.. J'ai déjà essayé, mais ça marche pas. Aidez-moi !
/* Conversion binaire <-> decimale */ #include <stdio.h> #include <math.h> main(void) { char Temp[255], StringValeur[255]; int Incrementation, Incrementation2; int Chiffre_Multiplication; int Nombre, Valeur; // L'utilisateur entre un nombre décimale entier printf ("Veuillez entrer votre chiffre: "); scanf("%d", &Nombre); // La valeur en entier sera transformer binaire, // puis reviendra en entier avec le code binaire. Valeur = atoi(itoa(Nombre, Temp, 2)); // Met dans un tableau chaque 1 & 0 à un emplacement sprintf(StringValeur, "%d\n", Valeur); printf ("%s\n", StringValeur); // Incremente de la fin jusqu'à 0 (normalement) Incrementation2 = (strlen(StringValeur)-2); // Incremente de 0 jusqu'à /0 for (Incrementation = 0; Incrementation < (strlen(StringValeur)-1); Incrementation++) { // Fait une 2 puissance "i", 1..2..4..8..16..32 etc... Chiffre_Multiplication = pow(2, Incrementation2); // Si dans le tableau qu'on est entrain de sonder, // il y a un 1, on rentre dedans pour faire "ok". if(StringValeur[Incrementation] == '1') { printf("%d:\t OK\n", Chiffre_Multiplication); } else { printf("%d:\t ..\n", Chiffre_Multiplication); } Incrementation2--; } getch(); }
A voir également:
- 1024 en binaire
- Binaire - Guide
- 1 go = 1024 mo ✓ - Forum Matériel & Système
- A quoi correspond 1 Go en Mo ✓ - Forum Windows
- 1 go = ? Mo ✓ - Forum Windows
- Question : 1mo = 1024 Ko ? ✓ - Forum Disque dur / SSD
5 réponses
Salut,
En fait il suffit de retirer ton atoi à ton programme et de tout mettre dans le sprintf
En fait il suffit de retirer ton atoi à ton programme et de tout mettre dans le sprintf
/* Conversion binaire <-> decimale */ #include <stdio.h> #include <math.h> main(void) { char Temp[255], StringValeur[255]; int Incrementation, Incrementation2; int Chiffre_Multiplication; int Nombre, Valeur; // L'utilisateur entre un nombre décimale entier printf ("Veuillez entrer votre chiffre: "); scanf("%d", &Nombre); sprintf(StringValeur, "%s\n", itoa(Nombre, Temp, 2)); printf ("%s\n", StringValeur); // Incremente de la fin jusqu'à 0 (normalement) Incrementation2 = (strlen(StringValeur)-2); // Incremente de 0 jusqu'à /0 for (Incrementation = 0; Incrementation < (strlen(StringValeur)-1); Incrementation++) { // Fait une 2 puissance "i", 1..2..4..8..16..32 etc... Chiffre_Multiplication = pow(2, Incrementation2); // Si dans le tableau qu'on est entrain de sonder, // il y a un 1, on rentre dedans pour faire "ok". if(StringValeur[Incrementation] == '1') { printf("%d:\t OK\n", Chiffre_Multiplication); } else { printf("%d:\t ..\n", Chiffre_Multiplication); } Incrementation2--; } getch(); }Bonne chance