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