Balou001
Messages postés2Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention26 mars 2009
-
24 mars 2009 à 16:07
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 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 ?
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024103 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...
Balou001
Messages postés2Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention26 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...