Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2593 connectés 

 


Dernière réponse
Sujet : programme pour transformer un entier en binaire
peemousse he he.je suis de l'avis de EL GRINGO mais c sympa kan meme..je vais utiliser la methode "mathematique" dans une boucle et HOp on va tester de toute facon il faut bien que j'essaye plusieurs choses
 
 
merci à tous

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
peemousse he he.je suis de l'avis de EL GRINGO mais c sympa kan meme..je vais utiliser la methode "mathematique" dans une boucle et HOp on va tester de toute facon il faut bien que j'essaye plusieurs choses
 
 
merci à tous
Gonzoide

chrisbk a écrit a écrit :

 
si il a pas le droit au tableau, les char * fodrait ptet mieux eviter ;)  




 
snif ... du C sans char*, c'est plus vraiment du C :sweat:

chrisbk bah si il a compris la methode, hein ?
El_gringo Mais son prof va complètement halluciner, y va le prendre pour un génie... le type, il à même pas appris à faire des tableau et y sors à son prof un truc qui bosse sur les bits comme ça !?
perso, moi j'y croirais pas !  :non:
chrisbk

Gonzoide a écrit a écrit :

ou alors tu concatenes au fur et a mesure un char * avec "0" ou "1" ...  




 
si il a pas le droit au tableau, les char * fodrait ptet mieux eviter ;)

Gonzoide ou alors tu concatenes au fur et a mesure un char * avec "0" ou "1" ...
chrisbk

peemousse a écrit a écrit :

//wow !!! je pensais que mon post serai aussi bien suivi...;sympa e tout cas...
 
bon, j'ai à peu pres compris ta methode chrisbk, mais tu utilises des tableaux et comme on les a pas vu encore j'ai pas trop le droit de le faire donc je pense que je vais utiliser la methode dite mathématique...qui m'est plus familiere on va dire
 
merci a tous  




 
bah tu peux t'eviter l'utilisation ds tableaux en mettant un printf direct dans la boucle

peemousse //wow !!! je pensais que mon post serai aussi bien suivi...;sympa e tout cas...
 
bon, j'ai à peu pres compris ta methode chrisbk, mais tu utilises des tableaux et comme on les a pas vu encore j'ai pas trop le droit de le faire donc je pense que je vais utiliser la methode dite mathématique...qui m'est plus familiere on va dire
 
merci a tous
chrisbk

Gonzoide a écrit a écrit :

Chris : ce qu'on a decrit c'est la methode propre, facilement comprehensible (peemousse nous dit qu'il est pas trop top), etnon dependante d'un langage. Mais c'est clair que si je devais l'implementer en C je ferais comme toi ;)  




 
vi...m'enfin quand on sait que ls PC bosse en binaire, n'est il pas logique (voir meme astucieux) d'utiliser ce fait ?
 
Sinon peemouse si t'as pas saisi ce que je fais :
 
ton PC travaille en binaire. par exemple 7 sera stocker sous la forme :
 
00000000000000000000000000000111 (ce qui est ce que l'on cherche finalement)
 
 
29 "0" + 3 "1"
Soit un total de 32bit (d'ou le 32 de ma boucle)
 
ce que l'on va faire c tester chaque bit l'un apres l'autre pour savoir si il est sur 0 ou sur 1
 
c'est le if (entier & (1<<i))  
 
en plus propre ca serait :
 
if ((entier & (1<<i)) != 0)
 
le (1<<i) ca veut dire "un decaler de i bit vers la gauche)
 
par exemple :
 
1<<0 donnera :
00000(...)1
 
1<<3 donnera :
00000(...)1000
 
ok ?
 
donc on utilise ce chiffre pour faire un ET logique avec notre entier. le ET va s'appliquer sur chaque bit
 
pour memoire
 
0 ET 0 = 0
1 ET 0 = 0
0 ET 1 = 0
1 ET 1 = 1
 
donc si apres notre ET le resultat est different de 0 cela veut dire que le i eme bit est sur 1, sinon sur 0
 
(si ca te semble tjs confu soit tu dis ou et je me relance dans une nouvelle explication soit tu utilise la methode mathematique decrite par les autres ;) )

Gonzoide Chris : ce qu'on a decrit c'est la methode propre, facilement comprehensible (peemousse nous dit qu'il est pas trop top), etnon dependante d'un langage. Mais c'est clair que si je devais l'implementer en C je ferais comme toi ;)
chrisbk int entier;
 char tab[33];
 int i;
 scanf("%d",&entier);
 
 
 tab[32]=0;
 
 for (i=31;i>=0;i--)
 {
  if (entier & (1<<i))
   tab[31-i]='1';
  else
   tab[31-i]='0';
 }
 
 printf(tab);
 
 
Soit je suis con soit vous vous compliquer la vie :D
Gonzoide mogi : et pourtant, ca date :)
mogi

Gonzoide a écrit a écrit :

C'ets pas dur, faut diviser par 2 et prendre le reste. Si par exemple tu prends 53 :
 
snip...
 




 
trop rapide Gonzoide ;)

mogi facile :)
 
on peut toujours donner l'algo générale
 
pour la partie entière -> divisions successives
pour la partie fractionnaire -> multiplications successives
 
11.8125 = 1011.1101
 
11 / 2 = 5 reste 1
5 / 2 = 2 reste 1
2 / 2 = 1 reste 0
1 / 2 = 0 reste 1
 
partie entière = 1011
 
.8125 * 2 = 1.625 on garde le 1
.625 * 2 = 1.25 on garde le 1
.25 * 2 = 0.5 on garde le 0
.5 * 2 = 1.0 on garde le 1
 
partie fractionnaire = 1101
 
Mogi.
peemousse Excusez moi.....c'est en C
 
 
//merci Gonzoide
Gonzoide C'ets pas dur, faut diviser par 2 et prendre le reste. Si par exemple tu prends 53 :
 
53 / 2 = 26 reste 1
26 / 2 = 13 reste 0
13 / 2 = 6  reste 1
6  / 2 = 3  reste 0
3  / 2 = 1  reste 1
(on s'arrete la)
 
PS : C'est un mauvais exemple, vu que ca fait 10101 dans les deux sens, mais t'as saisi le principe ...
 
ensuite, tu reprends les restes en commencant par celui du bas, soit 10101 ... et c'est tout :)

 

[edtdd]--Message édité par Gonzoide--[/edtdd]

El_gringo en quel langage !?
en plus, ça c plutot un truc mathématique qu'un truc de prog...
tu sais le faire mathématiquement !?
peemousse Salut tout le monde, j'ai un travail pour l'ecole ou je dois transformer un entier saisi au clavier en binaire....mais comme je debute je ne sais pas trop par ou et comment commencer si vous pouviez me donner un coup de main ca serait sympa...
 
A+

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)