Modulo

cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009 - 18 oct. 2002 à 08:49
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009 - 5 nov. 2002 à 20:38
Petite formule math que je viens de trouver pour contourner un probleme des longs. (Depacement capacite)

(x * y) Mod w = (x Mod w * Y Mod w) Mod w

Bien sur la 2e solution est plus longue mais elle peut evier le probleme comme j'ai eu quand x et y sont des longs avec des grandes valeurs

6Po

4 réponses

SibosisITS Messages postés 72 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 20 juin 2003
18 oct. 2002 à 17:17
Ceci va fonctionner très bien, à condition que 'w' ne soit pas trop grand ! s'il dépasse la valeur critique de 65 536 (2^16) pour un long signé, ou 4 294 967 296 (2^32) pour un long non signé, alors il peut y avoir un dépassement de capacité. Et comme en VB, on n'a accès qu'à des longs signés, c'est presque foutu si w>65 536...

(: Sibo ;)
0
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
18 oct. 2002 à 23:45
C'est clair il faut que w <= racine carre de la valeur max du type.

Pour un entier envion 194... max entier 32767

Doit surment avoir un autre truc mais bon deja modulo 194 c'est pas mal :D

==============
6Po

[mailto:6po@dreamersteam.org Email]
0
cs_Slan Messages postés 11 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 6 janvier 2003
5 nov. 2002 à 10:53
Est ce qu'on pourrait pas faire un changement de base ? Comme ça le nombre serait moins grand.
Mais dans ce cas il faut un module pour faire les calculs avec ces nombres. Exemple en hexa, il y a des lettre (A, B, C,...) mais il y en a aussi en base 36, mais que vb ne sait pas utiliser. D'où l'interet d'un ou plusieurs modules pour faire les calculs.
0
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
5 nov. 2002 à 20:38
On peut aussi faire comme les babylonniens et calculer en base 60 :D
C'est pour ca qu'on a 60 min dans 1 heure :D

fo dire 60 a bcp de divisieur.

15, 20, 30, 5,

c'est pour ca qu'on a le 1/4 d'heure :D

Non hormis la base 16 ou peutetre la base 32 avec de l'imagination mais c'est pas prevu pour... le plus rapide reste toujours la version binaire a 2 positions...

==============
6Po

[mailto:6po@dreamersteam.org Email]
0
Rejoignez-nous