C++ et tranformer un nombre en binaire Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème



AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
Le Deal du moment : -19%
Aspirateur balai Dyson V15 Detect Absolute (2023)
Voir le deal
649 €

 

 C++ et tranformer un nombre en binaire

Aller en bas 
+2
daminetreg
notiz85
6 participants
AuteurMessage
notiz85
Utilisateur confirmé: Rang *****
notiz85


Messages : 2004
Localisation : Vendée
Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...

C++ et tranformer un nombre en binaire Empty
MessageSujet: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptySam 23 Sep 2006 - 11:02

Sa fait un p'tit moment que c'est dans ma tête et que je trouve pas gnii

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 gnii

Est ce que vous avez compris ❓
:p_merci: D'avance
Revenir en haut Aller en bas
http://gmnotiz.fr.nf/
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptySam 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

PS: Pour obtenir le reste d'une division: % (Enfin j'espère que tu le sais...)
Revenir en haut Aller en bas
http://lecbna.org/
notiz85
Utilisateur confirmé: Rang *****
notiz85


Messages : 2004
Localisation : Vendée
Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptySam 23 Sep 2006 - 19:14

:p_merci: des que je peux aller sur mon PC de bureau j'essaye happy1

Et oui pour le %(modulo) je connais je les lu dans mon livre :
"C++ pour les nuls" qui est super 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 happy1 gnii happy1

PAS GRAVE happy1 super

:p_merci: quand même


Dernière édition par le Sam 23 Sep 2006 - 19:24, édité 1 fois
Revenir en haut Aller en bas
http://gmnotiz.fr.nf/
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptySam 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.
Revenir en haut Aller en bas
http://lecbna.org/
notiz85
Utilisateur confirmé: Rang *****
notiz85


Messages : 2004
Localisation : Vendée
Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptySam 23 Sep 2006 - 19:52

Grrrr colere2
J'arrive pas colere2 :
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 gnii ange :p_merci:
Revenir en haut Aller en bas
http://gmnotiz.fr.nf/
notiz85
Utilisateur confirmé: Rang *****
notiz85


Messages : 2004
Localisation : Vendée
Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptySam 23 Sep 2006 - 21:38

AIDER MOI :p_svp:
J'AI PAS TROUVER COMMENT FAIRE snif :snif2: snif
AIDER MOI :p_svp:
Revenir en haut Aller en bas
http://gmnotiz.fr.nf/
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptySam 23 Sep 2006 - 22:32

C'est bon calme toi, t'es sur un forum pas un tchat... :non: rire

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:
Revenir en haut Aller en bas
http://lecbna.org/
notiz85
Utilisateur confirmé: Rang *****
notiz85


Messages : 2004
Localisation : Vendée
Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyDim 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 gnii
Je vais attendre que tu me le face et en même temps je vais essayé d'autre truc. gnii
:p_merci:


J'y arrive pas snif :snif2: :snif2: AIDER MOI j'ai pas trouver comment
faire j'y arrive pas je trouve pas :snif2:
Revenir en haut Aller en bas
http://gmnotiz.fr.nf/
gaunt
Débutant
gaunt


Messages : 27
Localisation : au plus profond de la force

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyVen 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: )
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
[TheDarkTiger]


Messages : 7420
Localisation : Essonne

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyVen 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
Revenir en haut Aller en bas
http://www.tdms.fr
notiz85
Utilisateur confirmé: Rang *****
notiz85


Messages : 2004
Localisation : Vendée
Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyVen 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.
Revenir en haut Aller en bas
http://gmnotiz.fr.nf/
gaunt
Débutant
gaunt


Messages : 27
Localisation : au plus profond de la force

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyDim 28 Jan 2007 - 17:51

euh sa serais possible de l'avoir en C++ ? svp ouh
Revenir en haut Aller en bas
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyLun 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é.
Revenir en haut Aller en bas
http://lecbna.org/
notiz85
Utilisateur confirmé: Rang *****
notiz85


Messages : 2004
Localisation : Vendée
Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyLun 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:
Revenir en haut Aller en bas
http://gmnotiz.fr.nf/
gaunt
Débutant
gaunt


Messages : 27
Localisation : au plus profond de la force

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyMar 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
Revenir en haut Aller en bas
griffon0206
Nouveau



Messages : 7

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyDim 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;
}
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut'
Gab666


Messages : 5340
Localisation : **I move away from the mic to breathe in

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyLun 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.
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
griffon0206
Nouveau



Messages : 7

C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire EmptyLun 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
Revenir en haut Aller en bas
Contenu sponsorisé





C++ et tranformer un nombre en binaire Empty
MessageSujet: Re: C++ et tranformer un nombre en binaire   C++ et tranformer un nombre en binaire Empty

Revenir en haut Aller en bas
 
C++ et tranformer un nombre en binaire
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Binaire
» La structure binaire d'un .bmp
» [résolu] Ecriture litteral binaire [C/C++]
» Algorithme de rectangles recouvrant un masque binaire
» Nombre IR +....Avec gM

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: