binaire en c++ - C++ - Programmation
Marsh Posté le 12-05-2004 à 16:59:22
classe bitset de la STL
regarde dans n'importe quelle bonne doc, la MSDN si t'as rien
Marsh Posté le 12-05-2004 à 17:02:24
ben en fait g chercher dans la msdn mais y'a 10 millions de références... T'as pas un ptit exemple plutot??? STP???
Marsh Posté le 12-05-2004 à 17:03:06
std::vector<bool>
ou tout autre conteneur : vector et bitset ont un stockage optimisé
Marsh Posté le 12-05-2004 à 17:06:42
oula!! ça m'a l'air chaud... Dsl mais g rien pigé (dsl d'etre lourd à comprendre...)je suis un ptit novice... Tu peux me donner un exemple stp???
Marsh Posté le 12-05-2004 à 17:10:52
std::vector<bool> mes_cent_bits_à_zéro(100, False);
ou alros avec bitset (documente toi)
ou valarray<bool> (documente toi)
Marsh Posté le 12-05-2004 à 17:15:54
ouais ok mais y'a pas un truc plus simple pour dire à Mr C++ que :
char [] = "11100000" est du binaire? Faire un tableau d'élément binaires???
Marsh Posté le 12-05-2004 à 17:21:39
tu peux pas
à toi de faire une sequence de quelque chose que tu considères comme du binaire
genre
bool octet[8];
mais ça marche autant avec tout autre type entier
Marsh Posté le 12-05-2004 à 17:29:07
c nul... Il aurait pu pensser a tous le monde le bjarne brosburg... Merci qd meme!
Marsh Posté le 12-05-2004 à 17:33:50
mais tu racontes n'importe quoi ... on te dit que ça existe dans tous les sens, et que le binaire n'est qu'une vue de l'esprit. tout est binaire :
int i = 0340; -> ça fait exactement ce que tu demandes
à toi d'apprendre un peu avant de critiquer
Marsh Posté le 12-05-2004 à 17:44:14
Ca va t'énerve pas... Je voulais juste savoir si y'avait pas un truc plus simple...
Merci qd meme. @+
Marsh Posté le 12-05-2004 à 17:47:21
mais c'est enfantin, c'est toi qui abuses là ... personne au monde n'écris en base2 parce que c'est trop long. on utilise le décimal ou l'hexa/octal qui sont plus simple à manier. avec ça tu peux tout faire. après on ta indiquer comment manipuler une séquence de bits, bit par bit, parce qu'accéder au 3ème bit d'un entier c'est fastidieux
Marsh Posté le 12-05-2004 à 17:59:37
Taz, dans tous les forum que j'ai lu où t'as participé, y'en a pas un ou tu t'enerves pas contre un pauvre newbie. C'est pas parce que t'as bcp d'expérience dans le C++ que tu peux insulter les autres, prétentieux va.
damondef : http://msdn.microsoft.com/library/ [...] _class.asp
j'ai trouvé pour ton truc de chaîne en binaire :
bitset::to_string
mais ça marche que dans un sens.
Code :
|
voilà pour convertir un char*/char[] (chaîne type C) en entier 32-bits. Ca ne fait aucune vérif attention.
Marsh Posté le 12-05-2004 à 18:14:20
encore une fois, je ne vois aucun intéret d'écrire le binaire en base 2. apprends l'hexadécimal ou l'octal
Marsh Posté le 12-05-2004 à 18:17:17
Taz a écrit : encore une fois, je ne vois aucun intéret d'écrire le binaire en base 2. apprends l'hexadécimal ou l'octal |
et s'il y avait un intérêt que tu ne connaissais pas ?
ce truc j'ai déjà eu à le faire pour... un exo à la FAC. Le prof voulait une preuve que l'on avait compris le binaire (c'était en DEUG je crois...) et on devait coder un truc de conversion.
J'ai bien du le faire, ça m'a pris 5mn mais je l'ai fait. Si j'avais dit au prof "votre truc ça sert à rien, le binaire c'est une vision de l'esprit" je crois pas que j'aurais eu une bonne note.
Marsh Posté le 12-05-2004 à 18:18:35
jesus_christ a écrit : |
Je trouve cette remarque particulièrement déplacée par quelqu'un dont la citation associée est " votre nouveau dieu"
Marsh Posté le 12-05-2004 à 18:19:05
mais ça c'était simplement pour vous faire jouer avec les opérateurs bit à bit.
Marsh Posté le 12-05-2004 à 18:24:08
kadreg a écrit : Je trouve cette remarque particulièrement déplacée par quelqu'un dont la citation associée est " votre nouveau dieu" |
tu marques un point là
m'enfin un peu de gentillesse ne fais pas de mal, les réponses universelles du genre "ça sert à rien" ou "y'a mieux de toute façon" ça n'aide pas bcp.
Si tu trouves qu'il y a trop de newbies ici, va sur un forum plus "avancé" tu trouveras des questions à ta mesure
Marsh Posté le 12-05-2004 à 18:53:26
y a pas trop de newbyes, y a trop de newbyes qui veulent tou tprémachés c'est pas pareil
Marsh Posté le 12-05-2004 à 20:18:47
Je n'ai qu'une chose à dire :
56697665206c61206e6f746174696f6e2068657861646563696d616c2121
Marsh Posté le 12-05-2004 à 20:51:51
va t'en écrire ça en binaire ...
154047157143164141154040143141151040142151145156040141165163163151
Marsh Posté le 12-05-2004 à 21:01:06
216c6f6c21
Marsh Posté le 13-05-2004 à 01:25:17
C'est pas un problème de C++ mais de processeur : Intel ne permet pas de manipuler plus bas que l'octet.
Pour une comparaison de bitset et vector<bool> :
http://www.codeguru.com/Cpp/Cpp/cp [...] hread=8520
http://cpptips.hyperformix.com/cpp [...] v_vec_bool
Exemples bien expliqués :
http://www.codeguru.com/cpp/tic/tic0230.shtml
Marsh Posté le 13-05-2004 à 01:30:16
non, même pas. en C et C++, la plus petite unité adressable est le 'char' qui doit faire au moins 8bits.
voir la doc de SGI pour l'interface de std::vector<bool> et std::bitset. si on a de la place ou si les défaillances de bitsets et vector<bool> sont problématique, l'utilisation de sequence<bool> est tout aussi conseillée
Marsh Posté le 13-05-2004 à 01:35:49
Quoi "même pas". Je ne crois pas avoir dit le contraire.
Je réagissait à sa remarque que c'était un défaut du C++ de ne pas avoir pensé à pouvoir manipuler des bits.
Marsh Posté le 13-05-2004 à 07:35:16
jesus_christ a écrit : Taz, dans tous les forum que j'ai lu où t'as participé, y'en a pas un ou tu t'enerves pas contre un pauvre newbie. C'est pas parce que t'as bcp d'expérience dans le C++ que tu peux insulter les autres, prétentieux va.
|
damondef, si tu es encore la, explique clairement ton probleme car "je voudrais simplement stocker du binaire" ca ne veut rien dire, dans la mesure ou tout ce que tu stockes c'est en binaire a l'intérieur.
Donne un exemple clair : de quoi tu pars, qu'est-ce que tu voudrais obtenir...
Et pour jesus_christ : pourquoi se casser la tete pour stocker du binaire... en base 2!! T'as peur de manquer de mémoire?
Taz - faisant preuve d'une grande patience, vu les réponses du newbie - a montré quelque chose de beaucoup plus simple a manipuler, a savoir std::vect<bool> ou, si il faut un tableau, bool chaine[N];
Marsh Posté le 13-05-2004 à 08:26:53
Salut @ tous! Je ne pensser pas que mon sujet foutrais tant le bordel. En fait le truc que je comprenais pas ct : pk le C++ pouvais accepter l'ASCII et pas le binaire.
Désolé d'être un mauvais newbie mais bon...
Mon problème est que je dois envoyer une trame qui est composé de plusieurs champ sur une liaison RS232. Par exemple un champ contient : 011111110 que je remplace par le caractère : ~ (si je ne me suis pas trompé!) mais la ou ça se complique c quand je dois envoyer 11100000. Je ne trouve pas d'équivalent en ASCII.
En tout k sachez que je ne voulais pas foutre le bordel.
Merci pour votre aide :-)
Marsh Posté le 13-05-2004 à 08:57:32
Et au final je voudrais ranger la trame complète dans un tableau...
Marsh Posté le 13-05-2004 à 09:54:46
Le processeur ne permet pas de manipuler des bits, mais au minimum des octets.
Du coup les langages n'ont pas cette possibilité, sauf quelques implémentations spécifiques de compilateurs C destinés à des processeurs disposant de ce mode d'adressage (micro-contrôleurs notamment).
Marsh Posté le 13-05-2004 à 10:08:45
Et si tu dois envoyer 11100000 ben ce n'est pas un problème, envoie la version décimale, ou octale, ou hexadécimale, c'est pareil évidemment : 224, 0340, 0xE0
Marsh Posté le 13-05-2004 à 11:16:15
HelloWorld a écrit : Le processeur ne permet pas de manipuler des bits, mais au minimum des octets. |
manqué. ton processeur il peut tout faire, mais pas tout adresser. et comme déjà dit, y a des bêtes ou la plus petite unité adressable c'est 16bits
Marsh Posté le 13-05-2004 à 11:44:14
Taz a écrit : manqué. ton processeur il peut tout faire, mais pas tout adresser |
C'est contradictoire ca
Marsh Posté le 13-05-2004 à 14:00:46
Sous entendu son processeur = Intel (j'ai précisé Intel plus haut).
Et comme l'a dit Ace17, ta phrase elle veut rien dire. Et puis j'arrête là, c'est chipoter pour pas grand chose.
Marsh Posté le 13-05-2004 à 16:33:32
Et comment on fait pour ranger des valeurs hexa dans un tableau???
Marsh Posté le 13-05-2004 à 17:32:25
Ace17 a écrit : C'est contradictoire ca |
Je ne pense pas que cela est contradictoire.
Un coeur micro peut changer la valeur d'un seul bit dans un registre de 8/16/32..bits. Par contre, un micro ne peut en aucun cas addresser un seul bit en mémoire, il doit lire ou ecrire 8/16/32.. bits.
Marsh Posté le 13-05-2004 à 21:43:40
Mais non, c'était pour rigoler que je disais ca... je jouais sur le sens du mot "faire". Car a priori, addresser, c'est faire.
Marsh Posté le 12-05-2004 à 16:58:04
Salut à tous je voudrais simplement stocker du binaire. (Pas des caractère!) juste du binaire je ne connais pas la commande car en fait y faudrais que je code 11100000 qui équivaux à 224 en décimal mais qui n'a pas d'équivalent dans la norme ASCII.
Ce serais pour le placer dans un tableau. Comment dire au C++ qu'il "travaille" avec du binaire???
Merci