begin process at 2010 02 10 15:41:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

!!! Gestion d'entiers de 64 bits !!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

!!! Gestion d'entiers de 64 bits !!!

mercredi 9 août 2006 à 11:59:35 | !!! Gestion d'entiers de 64 bits !!!

yoyo269

Membre Club
Bonjour à toutes et à tous.

Je souhaite pouvoir gérer les entiers de 64 bits sous Dev-C++ (et je compte y rester).
Pour cela j'utilise la déclaration de "__int64" ou bien "long long".
Le programme se compile sans broncher sur les types de variables donc il les connait.
Sauf que si dans le code je mets quelque chose du genre : "__int64 Taille = 100000000000;", le compilateur me dit que :
"integer constant is too large for "long" type ".

Si vous avez des propositions ou solutions pour arriver à résoudre ce problème je vous en serais très reconnaissant.

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

mercredi 9 août 2006 à 14:03:53 | Re : !!! Gestion d'entiers de 64 bits !!!

Clem

Le problème est assez simple à comprendre, tu lui as entré le nombre "100000000000", sauf que ce nombre tu l'as entré sans lui préciser que tu voulais qu'il le traite comme un int64, du coup il continue à faire comme si c'était un nombre de 32 bits, et bien sûr c'est beaucoup plus grand que 4294967296. Il doit donc y avoir aussi en plus de ce problème qu'il t'indique, le problème comme quoi tu essayais d'assigner deux types incompatibles (__int64 et long)
Je pense que tu devrais essayer
__int64 Taille = (__int64)100000000000;
Mais j'en doute énormément qu'il t'affecte pour autant la bonne valeur, et penches toi plutôt vers quelque chose du genre, que j'ai trouvé sur google :
void __stdcall Test(HWND hdlg)
{
  char buf[32];
  __int64 r;
   strcpy(buf, "-987654321987654321");
  r = _atoi64(buf);
  _i64toa(r, buf);
  MessageBox(hdlg, buf, szappname, 0);
}

Ou alors, tu devras travailler en mémoire, comme mixer ton __int64 en union façe à deux de 32 bits. Ca devrait être plus rapide à éxécuter qu'avec les api, mais dans certains cas ça pourrait complexifier la chose.


ps: DevC++ n'est qu'un IDE, programme qui relie tous les outils de programmation. Le compilateur c'est plutôt gcc alias mingw.
Et aussi, évites de penser les __int64 comme des "long long", ce qui n'est pas compatible processeurs 64 bits d'après mes souvenirs.
mercredi 9 août 2006 à 14:50:52 | Re : !!! Gestion d'entiers de 64 bits !!!

steve_clamage

unsigned __int64 ou __uint64
mercredi 9 août 2006 à 15:00:31 | Re : !!! Gestion d'entiers de 64 bits !!!

yoyo269

Membre Club
T'as proposition ne me convient pas car il faut que je puisse gérer facilement sa valeur (ajout ou retrait de valeur, division, ...).
De plus l'erreur du compilateur m'indiquait : "constante trop grande pour loger dans un long", ce qui veut dire qu'il considère la variable Taille comme un long alors qu'il est clair qu'elle est déclarée en __int64. Même en forçant, avec un cast, la variable et la constante, il me met toujours la même erreur.

En tous cas merci de t'être penché sur mon cas c'est très sympa de ta part.
Si tu as une autre idée que la gestion brute en mémoire ça m'arrangerait beaucoup. :-p

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

mercredi 9 août 2006 à 15:23:34 | Re : !!! Gestion d'entiers de 64 bits !!!

steve_clamage

Réponse acceptée !
En C99,
long long n = 100000000000LL;

Pour une constante litterale de type __int64 je ne sais pas, regarde dans la documentation du compilateur.

mercredi 9 août 2006 à 15:52:24 | Re : !!! Gestion d'entiers de 64 bits !!!

yoyo269

Membre Club
Merci steve_clamage !!!
C'était juste le LL qu'il me fallait.
Evidemment encore 3 fois rien mais fallait le savoir.

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"



Cette discussion est classée dans : entiers, long, gestion, bits, int64


Répondre à ce message

Sujets en rapport avec ce message

Help me: grand nombres entiers [ par waza ] voila je suis en train de réaliser un programme de cryptage rsa mais le pb c ke je suis limiter a des entiers de 64 bits!! (avec __int64) et je me dem bench [ par draluorg ] Salut a tous,Voila je suis entrain de faire un ptit bench pour me faire une idee de la puissance "brute" d'un pc et je suis un peu surpris par les res Créer 1 variable avec plus de 32 bits [ par Balou001 ] Bonjour à tous,Supposons que j'ai une variable V de type unsigned long int dont tous les bits sont à 1 (bits forts à gauche).quand je fais un V>=1, le API :: Gestion de plusieurs fenetres [ par JackosKing ] Bon, voilà, j'ai fait un programme qui peux creer un infinité de fenêtres (en fonction de la ram bien entendue:)), le probleme c'esgt pour la gestion api :: SetWindowLong(hWnd, GWL_WNDPROC, Twiny::WndProc); probleme:( [ par JackosKing ] Voilà je voulais utilisé cette fonction comme on me l'avait conseillé, mais j'ai une erreure:E:\TinyShell\Twiny.cpp(56) : error C2664: 'SetWindowLongA convertir une image de 256 en 1024 niveau de gris [ par pirate75000 ] comment convertir une image de 256 niveau de gris 8 bits en une image de 1024 ou 2048 niveau de grisen 10 ou 12 bits commerce [ par milan0086 ] est ce que je peut avoir une aide sur un log sur la gestion commerciel ou gestion des stok facture laivraison meci type unsigned long long avec borland c++ [ par douss4 ] Bonjour,Je fait actuellement un programme de cryptage qui utilise une clé de 64 bits, ce qui correspond à la taille (d'après mes recherches) d'un unsi pb framework sous vista 64 bits [ par shedex ] Bonjour , impossible d'installer le framework 3.5 sous vista 64 bits Quelq'un pourrait-il m'aider car je vois pas comment faire pour l'installer ?


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales