-
Chiffre a Virgule Fixe
Hi.
J'aimerai savoir comment on fait pour cr�er des chiffres a virgules fixe, qui, dit on, sont plus rapides que les chiffres a virgule flottante. Je sais qu'en C++ il existe le type fixed, mais comme je suis en C, j'aimerai savoir comment on fait en C !
deuxieme question :
ca veut dire quoi ca ? :
int x,y=5;
x=y<<8 <-------- cette ligne.
que vauit la valeur x une fois effectu� ce decalage ?
-
glop
Je crois que DJGPP permet d'utiliser les variables de type fixe. A moins que �a ne soit la librairie Allegro...
Pour ce qui de ton �criture barbare, �a correspond � un d�calage binaire vers la gauche.
5(base 10)=00000101(base 2)
si tu d�cales de 8 vers la gauche, �a donne:
00000101 00000000(base 2) = 255 * 5(base 10) je crois... cad plein
-
Un chiffre c'est 0,1,2,...,9.
Un nombre est une suite de chiffre (avec une virgule si on veut ;-)
Tu parle de notation o� le nombre de d�cimales est fixe, et on stocke l'ensemble dans des nombres entiers car le calcul sur des entiers est bien plus rapide que sur des flottants (appel au coprocesseur arithm�tique, faut jouer avec ses registres, �a prend + de temps). Tu fixes par exemples 8 bits pour la partie d�cimale, reste x-8 bits pour la partie enti�re, on va dire que x=32 pour un long sur un Intel x86-32 bits.
Ex: 5.9 = 101 virgule 1001 sera stock� "101 00001001" (avec des z�ros devant), on calcule �a en faisant : 5*256 +9. Or *256 s'optimise bien avec le d�calage binaire car 256=2^8 -> 5 << 8 (multipli� par 2^8).
Apr�s faut tout reprogrammer : somme,diff�rence,produit,division (bal�ze �a),puissance,et convertion vers -> float ou -> double.
Ex: 4.0 -0.1 -> 3.9, mais en pratique �a donne
(4 0) - (0 1) = (4 -1) ---> (3 9) quand on travaille en base 10 (chiffre entre 0 et 10-1=9)
Viens faire un tour sur ma page des Grands nombres entiers, �a t'aidera :
http://www.haypocalc.com/grandnbr/
Et aussi voir les tutoriels et cours de C : http://c.developpez.com/cours/
Allez @+ Haypo
-