cs_jb60
Messages postés55Date d'inscriptionmardi 16 septembre 2003StatutMembreDernière intervention 4 août 2008
-
9 sept. 2004 à 20:15
racpp -
10 sept. 2004 à 16:07
Bonjour,
Hier, je me faisais un petit programme pour afficher un nombre en binaire.
Je voulais faire ça sur un char, un int, et un double.
Je me suis servi des décalages binaires >> et <<.
Or, tout va bien quand je fais ce décalage sur un char ou sur un int, mais lorsque je veux faire ce décalage binaire sur un double, le compilo me met un message d'erreur, comme-ci il ne pouvait pas calculer ce décalage binaire.
Comment ça se fait?
Vous êtes d'accord avec moi que l'on est censé pouvoir faire un décalage binaire sur un double qui devrait pouvoir aller jusqu'à un décalage de 64 bits dans les deux sens (>>64 et <<64), non?
Ou alors je ne comprends pas tout sur le décalage binaire, ça aurait peut être à voir avec l'architecture de Windows qui utilise seulement 32 bits? Mais alors, je ne comprends toujours pas, car même sur 64 bits, on devrait pouvoir décaler les bits, car les cases mémoires sont censées être à côté, non?
Voilà, je suppose que vous avez compris mon interrogation, alors j'attends vos réponses SVP.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 9 sept. 2004 à 20:23
Les decalages ne peuvent pas s'effectuer sur des float, seulement sur des entiers, c'est logik puis ce que les nombre float par exemple, sont stockés comme ca :
le signe sur 1bit
exposant sur 8bits
et mantisse sur 23bits
donc un decalage ne correspondrait a rien.
Idem pour les float.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 9 sept. 2004 à 20:24
Idem pour les double dsl.
Je viens de lire que les operateurs << et >> sont réservés aux types entiers, ta pas un warning ou mm une erreur a la compilation ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 sept. 2004 à 20:42
bah si il a une erreur, comme il l'a dit
Si tu veux aboslument faire un décalage avec des flottants, ca doit être possible, mais tu obtiendra des résultats aberrants...
cs_jb60
Messages postés55Date d'inscriptionmardi 16 septembre 2003StatutMembreDernière intervention 4 août 2008 9 sept. 2004 à 20:48
Oui, en fait je voulais justement savoir comment étaient stockés les float, avec la mantisse, l'exposant et le signe comme tu l'expliques AlexMan... Je voulais savoir l'aspect en mémoire de n'importe quel type de données.
Mais donc d'après Vecchio c'est quand même possible. Ca m'interesserait de savoir comment on peut le réaliser. Justement pour connaitre un peu plus comment sont stockés les nombres en mémoire.
cs_jb60
Messages postés55Date d'inscriptionmardi 16 septembre 2003StatutMembreDernière intervention 4 août 2008 9 sept. 2004 à 20:51
Et donc, d'après ce que tu me dis Vecchio, on peourrait donc réaliser ce décalage de bits sur 64 bits ou plus!!!!
Si t'avais un exemple pour savoir comment l'utiliser, j'aimerais bien savoir...
Merci.
cs_jb60
Messages postés55Date d'inscriptionmardi 16 septembre 2003StatutMembreDernière intervention 4 août 2008 9 sept. 2004 à 21:04
Lol djl, en fait, moi je suis très compliqué avec mes programmes, je fais des trucs sur le moment, même si ce n'est pas très intéressant pour les autres, mais c'est plutot interesant pour moi...
En fait, je voulais pouvoir ouvrir un fichier, et le lire sur un nombre d'octets que je choisi (par exemple, le notepad lit sur 1 octet)...
Donc, je voulais par exemple lire un fichier, et si je coche lire sur 4 octets, alors je voulais lire le fichier sur 4 octets, sur 8 si j'ai envie, etc... (même sur 12 octets).
Mais après, le problème, c'est pour afficher cette lecture, je ne sais pas comment faire, lol, mdr.
Alors j'ai décidé en premier temps d'ecrire ma lecture dans une string de 0 et de 1 successifs...
Par exemple si je lis sur 3 octets le fichier, ma string contiendra 24 successions de 0 et de 1., etc avec les lectures sur 10 octets, etc...
Je ne sais pas si vous avez comris et si ca peut être intéressant, mais c'est juste un but que je me suis fixé!!!
Voila.
J'ai un peu un esprit tordu et bizarre, mais j'essaye pleins de trucs comme ça, et ça me plait, et surtout ça m'amuse.
lol.
cs_eRoZion
Messages postés241Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention 8 octobre 20071 9 sept. 2004 à 21:10
Pour lire sur plusieurs octets d'un coup et avoir leur représentation binaire, lis un tableau de unsigned char que tu décomposeras à l'aide d'un pointeur.