| C++ et tranformer un nombre en binaire | |
|
|
Auteur | Message |
---|
notiz85 Utilisateur confirmé: Rang *****
![notiz85](https://2img.net/u/3412/18/80/54/avatars/350-37.png)
Messages : 2004 Localisation : Vendée Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: C++ et tranformer un nombre en binaire Sam 23 Sep 2006 - 11:02 | |
| Sa fait un p'tit moment que c'est dans ma tête et que je trouve pas Voila : Enfaite je voudrais que l'utilisateur entre un nombre (sa pas de problème) : - Code:
-
int nombre; { cout << "Entrer un nombre entier :\n" << endl; cin >> nombre; }
Et une fois qu'il à entrer un nombre, il fait un calcul, qu'il transforme mon nombre en nombre binaire : (exemple avec : 123) - Code:
-
123 = 0*128 + 1*64 + 1*32 + 1*16 + 1*8 + 0*4 + 1*2 + 1*1 = 01111011
MON CODE EST SA : - Code:
-
#include <iostream>
using namespace std;
int main() { int nombre; { cout << "Bonjour, je suis un programme cree pour\n" << endl; cout << "changer un chiffre ou un nombre en binaire\n" << endl; cout << "Entrer un nombre entier :\n" << endl; cin >> nombre; cout << "Vous avez entrer le nombre : " << nombre << ".\n" << endl; system("PAUSE"); return 0; } } PAS FINIT BIENSUR Mais voila j'aimerais savoir comment dire à l'ordinateur de faire un calcul avec c'est nombre et de trouver le résultat demander par l'utilisateur. Et après il prend les chiffres 0 et 1 du calcul Est ce que vous avez compris :p_merci: D'avance |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
daminetreg Administrateur
![daminetreg](https://2img.net/u/3412/18/80/54/avatars/6-29.png)
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Sam 23 Sep 2006 - 17:51 | |
| En fait tu veux changer la base, tu veux le mettre en base 2. Tu divises le nombre par 2 et le résultat obtenu par 2 etc. de façon à obtenir des nombres entiers. Jusqu'à obtenir 1 ou 0. Et tout les restes des divisions représente le nombre que tu cherches. Par exemple tu veux: 23 en binaire, et bien ça donnerait: 23/2 = 11 Reste: 1 ; 11/2 = 5 Reste 1 ; 5/2 = 2 Reste 1; 2/2 = 1 Reste 0; Ensuite tu ajoute les restes et le dernier quotient puis t inverses les restes obtenus, et ça te donne: 10111 en binaire ce qui fait 23 en base 10. Bien entendu c'est la même chose que l'exemple que tu as posté. Cela donnerait un algorithme du genre: 1: Entrer le nombre (var_n) 2: Entrer la base (var_b) (Dans ton cas c'est 2) 3: Diviser var_n par var_b (Division entière bien entendu) 4: Ajouter le reste à la suite de la string: var_result 5: Si le quotient de la division est > var_b recommencer l'étape 3 Sinon ajouter ce quotient à la suite de la string var_result puis inverser la string. Voilà, ça devrait te suffir. ![clinoeuil](/users/3412/18/80/54/smiles/891243.png) PS: Pour obtenir le reste d'une division: % (Enfin j'espère que tu le sais...) |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
notiz85 Utilisateur confirmé: Rang *****
![notiz85](https://2img.net/u/3412/18/80/54/avatars/350-37.png)
Messages : 2004 Localisation : Vendée Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Sam 23 Sep 2006 - 19:14 | |
| :p_merci: des que je peux aller sur mon PC de bureau j'essaye Et oui pour le %( modulo) je connais je les lu dans mon livre : " C++ pour les nuls" qui est super PS : il n'y a que cette partis la que je n'ai pas très bien compris : - Citation :
Ensuite tu ajoute les restes et le dernier quotient puis t'inverses les restes obtenus, et ça te donne: 10111 en binaire ce qui fait 23 en base 10. Bien entendu c'est la même chose que l'exemple que tu as posté.
Edit: Si sa donna sa enfaite : - Citation :
23/2 = 11 (1) 11/2 = 5 (1) 5/2 = 2 (1) 2/2 = 1 (0)
10111
10111
Si j'ai bien compris
PAS GRAVE :p_merci: quand même
Dernière édition par le Sam 23 Sep 2006 - 19:24, édité 1 fois |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
daminetreg Administrateur
![daminetreg](https://2img.net/u/3412/18/80/54/avatars/6-29.png)
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Sam 23 Sep 2006 - 19:22 | |
| En fait je voulais dire qu'il faut prendre tout les restes obtenus plus le résultat de la toute dernière division. Puis il faut inverser ça de façon à obtenir le nombre de la nouvelle base, en l'occurence la base 2 (Binaire).
Mettons que dans l'ordre tu ais ça comme restes: 1, 1, 0. Et que le résultat de la dernière division est: 1.
Alors le chiffre binaire sera: 1 0 1 1
Tu vois j'ai retourné ce qu'on a obtenu, c'est comme si tu lisai ce que tu obtiens dans un mirroir. Et donc le reflet serait la réponse. Je peux faire un dessin sinon?
Edit: Désolé j'étais en train de poster je n'avais pas vu que tu avais compris. |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
notiz85 Utilisateur confirmé: Rang *****
![notiz85](https://2img.net/u/3412/18/80/54/avatars/350-37.png)
Messages : 2004 Localisation : Vendée Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Sam 23 Sep 2006 - 19:52 | |
| Grrrr J'arrive pas ![colere2](/users/3412/18/80/54/smiles/colere22.gif) : - Code:
-
#include <iostream>
using namespace std;
int main() { // nombre int n; // base int b; b = 2; // * Division du nombre par la base * int c; c = n/b; // * modulo * int modulo; modulo = n%b; // * 2 * int c2; c2 = modulo/b; // * 3 * int c3; c3 = modulo/b; // * 4 * int c4; c4 = modulo/b; { cout << "Bonjour, je suis un programme cree pour\n" << endl; cout << "changer un chiffre ou un nombre en binaire\n" << endl; cout << "----------------------------------------------------------------\n" << endl; cout << "Entrer un nombre entier :\n" << endl; cin >> n; cout << c << endl; if (modulo > b) { cout << c << endl; if (modulo > b) { cout << c << endl; if (modulo > b) { cout << c << endl; } } } system("PAUSE"); return 0; } }
Il n'est pas fini et je pense que pour le meilleur moyen est de créer une boucle, au lieu de mettre a chaque fois if if if if if ...Aurais-tu une idée D@minetreg :p_svp: ou quelqu'un d'autre :p_merci: PS : et pour faire apparaitre le résultat avec une variable string result je vois pas trop comment faire ![ange](/users/3412/18/80/54/smiles/ange23.gif) :p_merci: |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
notiz85 Utilisateur confirmé: Rang *****
![notiz85](https://2img.net/u/3412/18/80/54/avatars/350-37.png)
Messages : 2004 Localisation : Vendée Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | |
![Aller en bas](https://2img.net/i/empty.gif) | |
daminetreg Administrateur
![daminetreg](https://2img.net/u/3412/18/80/54/avatars/6-29.png)
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Sam 23 Sep 2006 - 22:32 | |
| C'est bon calme toi, t'es sur un forum pas un tchat... :non: Oui en effet une boucle serait le meilleur moyen, d'ailleurs comment veux tu que ce que tu as mis fonctionne? Il faut qu'il le divise un certain nombre de fois, tu aurais pu respecter l'algo que je t'ai donné, enfin bon je vais te le faire, wait a moment, ou attends jusqu'à demain, ça dépendera si je vais me coucher ou non. :oue: |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
notiz85 Utilisateur confirmé: Rang *****
![notiz85](https://2img.net/u/3412/18/80/54/avatars/350-37.png)
Messages : 2004 Localisation : Vendée Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Dim 24 Sep 2006 - 9:59 | |
| - Citation :
tu aurais pu respecter l'algo que je t'ai donné
C'est ce que j'ai essayé de faire Je vais attendre que tu me le face et en même temps je vais essayé d'autre truc. :p_merci:J'y arrive pas ![snif](/users/3412/18/80/54/smiles/846663.png) :snif2: :snif2: AIDER MOI j'ai pas trouver comment faire j'y arrive pas je trouve pas :snif2: |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
gaunt Débutant
![gaunt](https://2img.net/u/3412/18/80/54/avatars/448-99.jpg)
Messages : 27 Localisation : au plus profond de la force
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Ven 26 Jan 2007 - 19:00 | |
| daminetreg je voudrais savoir si tu as effacé le programme pour tranformer un nombre en binaire si c'est le cas tampis sinon tu pourrais me le passer stp ? ( je fais un TPE sur la numération binaire :oue: ) |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
[TheDarkTiger] Modérateur
![[TheDarkTiger]](https://2img.net/u/3412/18/80/54/avatars/78-67.gif)
Messages : 7420 Localisation : Essonne
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Ven 26 Jan 2007 - 19:07 | |
| voila en TI-Basic (si vous avez une TI82 , 83 , 83+, 83+se, 84+ ,84+se) - Code:
-
Lbl 1 EffEcr Input "BASE:",B If B<2 ou B>37 ou B=/partEnt(B):Then Disp "LA BASE DOIT","ETRE ENTRE 2 ET","37! Pause Goto1 End Input "",A If A<0:Goto 0 Disp "" "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"->Chaîne0 For(Z,1,16 partEnt(A/B)->C BpartEnt(A/B)->R Output(3,17-Z,sous-chaine(chaîne0,R+1,1) C->A If C=0:Goto 0 End Lbl0 |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
notiz85 Utilisateur confirmé: Rang *****
![notiz85](https://2img.net/u/3412/18/80/54/avatars/350-37.png)
Messages : 2004 Localisation : Vendée Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Ven 26 Jan 2007 - 19:16 | |
| Est ce que [TDT] tu serais un peu le mettre en C++ ou pouvoir d'écrire chaque étape que tu fais car je comprend le TI-Basic, j'ai pas appris. |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
gaunt Débutant
![gaunt](https://2img.net/u/3412/18/80/54/avatars/448-99.jpg)
Messages : 27 Localisation : au plus profond de la force
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Dim 28 Jan 2007 - 17:51 | |
| euh sa serais possible de l'avoir en C++ ? svp ![ouh](/users/3412/18/80/54/smiles/888402.png) |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
daminetreg Administrateur
![daminetreg](https://2img.net/u/3412/18/80/54/avatars/6-29.png)
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Lun 29 Jan 2007 - 18:51 | |
| Je vous ai mis chaque étape au dessus, en C++ ça fonctionne pareil, et je n'ai pas le temps actuellement de faire ça, je coure de gauche à droite désolé. |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
notiz85 Utilisateur confirmé: Rang *****
![notiz85](https://2img.net/u/3412/18/80/54/avatars/350-37.png)
Messages : 2004 Localisation : Vendée Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Lun 29 Jan 2007 - 18:54 | |
| - daminetreg a écrit:
- Je vous ai mis chaque étape au dessus, en C++ ça fonctionne pareil, et je n'ai pas le temps actuellement de faire ça, je coure de gauche à droite désolé.
Je m'en rappelle très bien mais il y a des moments je comprend pas très bien comment on peut avoir des 0 au milieu par exemple du nombre binaire avec la division :p_desole: |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
gaunt Débutant
![gaunt](https://2img.net/u/3412/18/80/54/avatars/448-99.jpg)
Messages : 27 Localisation : au plus profond de la force
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Mar 30 Jan 2007 - 20:49 | |
| bonne question j'y avais pas pensé . bon je vais essayer de me débrouiller pour le faire, j'ai essayé sans succet mais je vais persévérer, merci pour tout |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
griffon0206 Nouveau
Messages : 7
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Dim 18 Mar 2007 - 13:25 | |
| Si tu souhaite transformer un chiffre en binaire il suffit de regarder la valeur en binaire avec des opérations bit à bit. Utilise les décalages et les masques.
par exemple tu a unsigned int i = 1;
le masque 1 te donne le bit le plus a droite, soit
(i & 1) te donne 1(en binaire) et passe au bit suivant en décalant de 1 bit vers la droite tout les bits comme ceci (i = i>>1) et la (i & 1) te donne le prochain bit(ici 0). Si i = 0b110101 alors i se transforme en 0b11010
Sinon il y a le modulo 2 if(i%2)alors ton bit a droite est 1 sinon 0 ensuite tu décale vers la droite ou divise par 2 pour passer au bit suivant.
par exemple:
unsigned int x = 3200;//numéro à convertir unsigned int bit[sizeof(int)*8];//sizeof(int)*nombre de bit par octet memset((void*)bit, 0, sizeof(int)*sizeof(int)*8 );
for(int i=0; i<sizeof(int)*8; i++) { bit[sizeof(int)*8-1-i] = (unsigned int)(x & 1);// 0 ou 1 x = (unsigned int)(x >> 1); }
c'est rapide et naturel vue qu'on regard directement les bit de la valeur binaire de x.
une petite optimisation:
unsigned int x = 3200;//numéro à convertir unsigned int bit[sizeof(int)*8];//sizeof(int)*nombre de bit par octet memset((void*)bit, 0, sizeof(int)*sizeof(int)*8 ); int nbBit = 0;
for(int i=0; i<sizeof(int)*8; i++) { bit[sizeof(int)*8-1-i] = (unsigned int)(x & 1);// 0 ou 1 x = (unsigned int)(x >> 1); nbBit++; if(!x)break; } |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
Gab666 Modérateur 'Zut'
![Gab666](https://2img.net/u/3412/18/80/54/avatars/122-8.jpg)
Messages : 5340 Localisation : **I move away from the mic to breathe in
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Lun 19 Mar 2007 - 1:10 | |
| Votre problème m'a interressé alors je viens de faire un programme pour convertir un nombre en binaire (exercice simple par ailleur) je vous présente ma façon C'est du C mais si ça vous perturbe vraiment changez les printf pour des cout et stdio.h pour iostream -.- - Citation :
- #include <stdio.h>
#include <math.h>
#define BYTE_SIZE 8
typedef enum{ false, true }bool;
int main() { int i=0; bool bits[BYTE_SIZE]; unsigned char nombre = 200; unsigned char nombreManip = nombre; int count2 = 0; for(i=BYTE_SIZE-1,count2=0;i>=0;i--,count2++) { bits[count2] = pow(2,i)<=nombreManip; if(bits[count2]) nombreManip -= pow(2,i); } printf("%i->", nombre); for(i=0;i<BYTE_SIZE;i++) printf("%i",bits[i]); printf("\nAppuyez sur ENTER pour continuer.\n"); getchar(); return 0; }
La conversion de nombre en binaire c'est très simple quand on sais comment s'y prendre :fier: voilà c'est fait vite ça m'a pris 5 minutes Je vais vous présenter l'algo en gros BYTE_SIZE est la taille en bits d'un byte ici j'ai pris 8(char non-signé) ensuite j'ai fait un array de bits j'ai pris le type bool(défini avec un enumerations. En C++, pas besoin de cette enumeration le type bool est déja là) le bit à la position 0 dans l'array est le premier à gauche ensuite je calcul si mon nombre est plus grand que 2^i et je le soustrait de 2^i si oui(i qui est décrémenté chaque fois) comme le bit de gauche vaux 128(i^7(BYTE_SIZE-1)) ensuite l'autre vaux la moitié du 128 qui reste l'autre la moitié de la moitié etc. et je stock les bits comme ça dans l'array ensuite je les affiche. |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
griffon0206 Nouveau
Messages : 7
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire Lun 19 Mar 2007 - 6:49 | |
| moui mais vous(en général) pensez en terme de mathématique(calcul division puissance ect...). Alors qu'il y a rien à calcul, il suffit de regarder la valeur des bit directement.
unsigned int i=11;
le premier bit ((i >> 0) & 1) ici =1
le deuxième bit ((i >> 1) & 1) ici =1
le troisième bit ((i >> 2) & 1) ici =0
le quatrième bit ((i >> 3) & 1) ici =1 |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
Contenu sponsorisé
![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | Sujet: Re: C++ et tranformer un nombre en binaire ![C++ et tranformer un nombre en binaire Empty](https://2img.net/i/empty.gif) | |
| |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
| C++ et tranformer un nombre en binaire | |
|