Créer 1 variable avec plus de 32 bits

Balou001 Messages postés 2 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 26 mars 2009 - 24 mars 2009 à 16:07
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 27 mars 2009 à 09:31
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 ; puis un V>>=1, le bit le plus fort est passé à 0, logique.

J'essaie de conserver cette info, car j'ai parfois besoin de multiplier par 2 (<<=1) des nombres supérieurs à 2^32-1.

J'ai essayé de stocker tous ces bits avec un (char*)malloc, chaque case valant '1' ou '0', mais les opérations finissent par être longues (plusieurs heures de traitement sur des clefs relativement longues).
J'ai essayé de stocker tout ça dans un (unsigned long int *)malloc, chaque bit de chaque case valant soit 1 soit 0. C'est mieux, ça prend moins de place (8 fois moins, encore logique), et c'est plus rapide. Mais le report d'un bit qui saute pour l'ajouter au début de la case suivante est un peu laborieux. Et ça finit par devenir long aussi.

Puis-je créer un type (super méga long int), avec autant de bits que je le veux, et qui accepte les opérateurs binaires ?
Ou voyez-vous une meilleure idée ?

Merci

4 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
26 mars 2009 à 15:31
Salut,
unsigned long long peut ptet t'aider

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
26 mars 2009 à 15:40
Re,
Ou bien ça
Ou encore ça
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Balou001 Messages postés 2 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 26 mars 2009
26 mars 2009 à 18:12
Merci pour ces infos, je ne connaissais pas.
Je vais regarder ça en détail.

Mais à première vue, ça ne va pas résoudre mon problème.

Je me prends la tête sur des clefs de quasiment 100'000 bits avec des opérations qui se rebouclent environ 100'000 fois sur chaque bit... et c pas satisfaisant.

En cherchant un peu, j'ai trouvé quelque chose qui me semble relativement équivalent.
C'est l'algorithme de Lucas-Lehmer, pour tester si un nombre écrit sous forme binaire est premier ou non.
Les gens qui utilisent ça ont l'air de mettre au carré des nombres binaires de plus de 30'000'000 de bits  et tout ça assez rapidement.
Je n'en demande pas autant...

Une idée de comment ça peut être codé ?
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
27 mars 2009 à 09:31
Ah non, désolé, je ne maîtrises pas ce domaine...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous