Entiers de taille illimité

Description

En fait ce sont quelques unités qui permettent de faire des calculs sur des entiers (Signés ou Non) d'une taille illimitée.
En effet les entiers sont stockés dans des types personnalisés (BigCardinal, BigInteger) dans des tableaux dynamiques de Byte. L'entier y est stocké dans la base 256 ce qui permet de faire des calcul très rapidement et s'occuper le minimum d'espace en mémoire en comparant avec à la méthode qui consiste à faire des opération directement sur les string.
Le code à été développé en Delphi et Assembleur Ce qui optimise le programme.
Les calculs se font rapidement (Sauf pour la fonction pow qui est l'équivalent de Power en Delphi) j'ai déjà additionné des nombre de plus de 9000 chiffre en base décimale il peut faire les opérations Suivantes:
- Addition
- Soustraction
- Multiplication
- Division Entière
- Modulo
- Puissance
- Incrémentation
- Décrémentation
Il fait aussi la comparaison entre les nombres.
Voilà, j'espère que c'est clair.

Source / Exemple :


// Exemple d'utilisation
uses AdvBig_Addition, AdvBig_Big, AdvBig_Comparaison, AdvBig_Division, AdvBig_Modulo, AdvBig_Multiplication, AdvBig_Soustraction, BasicBigNumbers; // il faut declarer ces unités pour pouvoir utiliser les fonctions

procedure TForm2.Button1Click(Sender: TObject);
var a,b,c:BigInteger;
var d:string;
begin
     a:=big(Edit1.Text,true); //stocker le nombre ecrit dans Edit1 dans a
     b:=big(Edit2.Text,true); //stocker le nombre ecrit dans Edit2 dans b
     c:=addition(a,b);        //c=a+b
     d:=BigToStr(c);          //Ecrire le nombre c en base decimale dans d
     Edit3.Text:=d;           
end;

Conclusion :


Pour utiliser le programme il faut déclarer les unités "AdvBig_Addition, AdvBig_Big, AdvBig_Comparaison, AdvBig_Division, AdvBig_Modulo, AdvBig_Multiplication, AdvBig_Soustraction, BasicBigNumbers".

Pour convertir un nombre entier ou un nombre écrit dans un string en :
BigCardinal(Non Signé): a:=big(15823) ou a:=big('12544')
BigInteger(Signé): a:=big(15823,true) ou a:=big('-12544',true)

---------------------liste des fonctions------------------------

//Calcul---------------------------------------------------------
- Addition(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):BigInteger
- Soustraction(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):BigInteger
- Multiplication(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):BigInteger
- Division(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):BigInteger
- Modulo(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):BigInteger
- Pow(BigCardinal ou BigInteger ou int64,BigCardinal):BigInteger

//Comparaison----------------------------------------------------
- IsEgl(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):Boolean
- IsSup(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):Boolean
- IsInf(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):Boolean
- IsSupOrEgl(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):Boolean
- IsInfOrEgl(BigCardinal ou BigInteger ou int64,BigCardinal ou BigInteger ou int64):Boolean

//Procedures------------------------------------------------------
- Increm(BigCardinal ou BigInteger) (incrémentation)
- Decrem(BigCardinal ou BigInteger) (Decrementation)

//Conversion------------------------------------------------------
- Big(int64 ou String):BigCardinal //Décimal vers BigCardinal
- Big(int64 ou String,Boolean):BigInteger //Décimal vers BigInteger
- Bigtostr(BigCardinal ou BigInteger):String //Big vers Decimal(string)
- Bigtoint(BigCardinal ou BigInteger):int64 //Big vers Decimal(int64)

Ouf. J?ai programmé ce truc à la hâte je sais qu'il manque beaucoup de choses et qu'il y aura des bugs que je n?ai pas vu, Merci de mettre votre avis.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.