Je ne peux que travail en 32 bits signé mais le problème c'est lorsque j'essaye de faire un modulo avec un nombre qui dépasse cette capacité. Je voudrais savoir comment faire pour simplifier mon nombre et effectuer un modulo avec de telle sorte que le résultat soit identique avec un nombre >32 bits signé.
Cette question n'as pas ça place dans le forum TI car je travail en faite sous Visual Basic, j'ai fait de nombreuse recherche à ce sujet et aucune réponde.
Donc quand je fait Nombre >32 bits signé mod 8 j'ai un dépassement de capacité et je voudrais le détourner.
Bas le modulo varie de 16,10,2.
pour faire un modulo de nombre pair, il me semble que tu peux faire un &(nbr-1)
ceka dit, je sais pas si les operateurs sur bits existent en vb
Et puis ce n'est pas des modulos sur les nombres pairs qui se simplifient, mais les modulos avec des puissances de 2 (2,4,8,16,...)
En effet VB n'accepte pas les divisions sur 64 bits. J'avais déjà essayé une méthode mais sans succès:
modulo=(MonNombre-1)/Base mod (Base/2)
Non j'ai besoin du resultat de modulo 2,10,16.
Mais je ne vois pas à quoi correspond a et b ici car je fait seulement x mod 2 ou 10 ou 16 mais x est supérieur à 32 bits signé.
Kevin Kofler Le 04/05/2003 à 18:17Edité par Kevin Kofler le 04/05/2003 à 18:29 Bon, pour 2 et 16, tu jettes le Long de poids fort, il ne te sert pas. Pour 10, tu as:
x = msDWORD * 4294967296 + lsDWORD
Donc:
x mod 10 = ((msDWORD mod 10) * (4294967296 mod 10) + (lsDWORD mod 10)) mod 10 = ((msDWORD mod 10) * 6 + (lsDWORD mod 10)) mod 10
C'est aussi simple que ça.
J'ai [((Msw mod y) * (0xFFFFFFFF mod y)) mod y + (Lsw mod y)] mod y en appliquant les formules. Je me suis trompé où ?

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
Ah oui, il faut que j'applique un mod 10 autour du tout aussi. Mais c'est bien 0x100000000, pas 0xFFFFFFFF.
heu nan il faut aussi le modulo autour du (Msw mod y) * ((0xFFFFFFFF+1) mod y)x = a*b <=> a*b < x, parceque 9*6 > 10.a*b mod nan ?

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
Ben non. On a aussi (a + b) mod 10 = (a + (b mod 10)) mod 10. Pas besoin d'appliquer le modulo aux deux.
(4294967296 mod y) = ((65536 mod y)*(65536 mod y)) mod y
Et ça, tu peux le faire sous VB.
C'est bizarre Kevin ta formule semble correcte et pourtant elle ne fonctionne pas. Mais j'ai remarqué aussi un autre bug qui n'est pas du à la convertion avec les module c'est que l'ordre des chiffres est inversé donc je pense que le mieux c'est de faire ça en 8 bits puis de traiter la chaîne de caractère pour la convertir en 16 et 32 bits, certe ça ne fonctionneras pas en base 10 mais ce n'est pas grave.
Tu dis qu'elle ne marche pas. Pour tous les nombres, ou seulement pour les nombres négatifs ?

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.