|
|
|
|
|
|
|
Dernière mise à jour : 21 Octobre 2000
![]()

![]()
Les Nombres Fixes
Les nombres fixes, c'est quoi ?
De nos jours, avec la puissance des nouveaux pc (pentium, amd...) le calcul sur des nombres réels se fait, relativement rapidemement, mais, est toujour plus long que de faire des calculs sur des entiers. Aujourd'hui même celui, qui veux jouer avec le dernier jeu qui tu de la mort sans CARTE 3D, ben c'est lent car ces cartes sont spécialisées et dégage le processeur de quelques MILLION d'opérations. Alors comment faire pour que ça marche plus vite (Comme par exemple optimiser un programme en OPENGL) sans perdre de précisions (si peu) et gagné en vitesse. Ben c'est l'utilisation des NOMBRES FIXES.
BC'est bien jolie tout ça, vous vous dites, mais comment qu'on s'en sert ?
Ben la premiere chose, est de définir les 4 opérations de bases. L'addition et la soustraction sont très simple mais la division et la multiplication exigent quelques corrections, voici quelques exemples de calcul :
- Addition :
1.2*100 + 1.5*100 = 2.7*100
- Soustraction :
1.2*100 - 1.5*100 = 0.3*100
- Multiplication
1.2*100 * 1.5*100 = 1.8*100*100 il faudre diviser
le resultat par 100
- Division
1.2*100 / 1.5*100 = 0.8 il faudra multiplier le
résultat par 100
Bon comme vous le voyer, quelques petites optimisations, peuvent être encore faites, comme par exemple de remplacer la puissance de 10 par une puissance de 2, comme ça, les opérations sur la multiplication, ou division, peuvent être remplacé, par des décalages de bits, beaucoup plus rapide.
Comment, choisir la bonne précision, par exemple 256 (partie décimale en 8bits) serait le plus rapide car les calcul porterai sur des nombres en 16bit. Mais, pour ma part je préfère 512 (partie décimale sur 9bits) pour obtenir une meilleur précision. Qui de plus, comme vous le savez sûrement les entiers en 32bits sont utilisables avec des variables Longint. Voici comment s'effectue la conversion d'un nombre real en fixe et vice et versa :
- Fixed = round(_real*$200) // $200= précision sur 9bits
et l'inverse
- _Real = fixed / $200
Voila, donc au début de votre programme vous effectuer la conversion
de vos valeurs initiales, puis utiliser les procedures des fixed à la
place de real et regarder la différence.
Télécharger ici la version de l'unité fixed pour DELPHI
Bonne programmation.
C'est un petit début mais, si vous aussi, avez des articles, ou des suggestions, je serai ravi, de les mettre sur cette page. Contactez moi !
![]()

![]()