-
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
-