Principe des fonctionnements des ordinateurs.

Discutez d'informatique ici !
z^42
Membre Naturel
Messages: 60
Enregistré le: 21 Sep 2014, 15:18

Principe des fonctionnements des ordinateurs.

par z^42 » 12 Nov 2014, 20:01

Bonsoir,

Pouvez vous m'expliquer svp des notions corrigés que je n'ai pas compris?

Question 1.

Qu'est ce que les deux programmes suivants affiche ?
Code: Tout sélectionner
double n = 10.0;
println(d/0);


=> pourquoi il affiche +infinie

Question 2:
On va s'interesse au test suivant : (0.3f -0.2f) == (0.2f-0.1f)
-Quel est la valeur binaire de 0.3f ?
-Ecrire en binaire 0.2 et 0.1.
-Calculer 0.3f-0.2f et 0.2f-0.1f en utilisant leur représentation binaireSolution :
Solution :
La conversion de 0.3 donne lieu a la suite : 0.6,1.2,0.4,0.8,1.6...
et ainsi la representation de 0.3 en base deux est infi nie : 0:010011001100(1100)
En normalisant, on obtient :1.0011001100(1100)*10^-10 // Comment on n'a trouvé 1.0011001100(1100)*10^-10
Examinons, les 23 premiers bits de la mantisse apres le point et le 24eme : 001100110011001100110011. //Comment on n'a trouvé ca: 001100110011001100110011.
Le 24eme bit etant egal a 1, il y a un arrondi.
Ce qui sera memorise dans la mantisse est alors : 00110011001100110011010 k La valeur memorisee
dans le champ exposant est : 01111111 + (-10) = 01111101 // Comment on n'a trouvé ca 00110011001100110011010 k et ca 01111111 + (-10) = 01111101
La representation sur 32 bits est donc : 00111110100110011001100110011010. // pourquoi ce nombre ?
-> 0.2 = 00111110010011001100110011001101 ;// pourquoi ce nombre ?
0.1 = 00111101110011001100110011001101;// pourquoi ce nombre ?
-> La representation de 0.3f - 0.2f exprimee sous forme hexadecimale est 3DCCCCCE alors que celle de
0.2f - 0.1f est 3DCCCCCD. //Comment on n'a trouvé ces formes hexadécimales ?
La valeur du test d'egalite des deux expressions est donc inevitablement false.


Merci d'avance
Bonne soirée



Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21532
Enregistré le: 11 Nov 2009, 22:53

par Ben314 » 12 Nov 2014, 21:11

Salut,
0.3(décimal) = 0.0100110011....(binaire) où l'écriture est infinie de période 0011
= 1.00110011.... x 10^(-10) (binaire)
où il faut lire les deux 10 à la fin comme des 10 en binaire (c'est à dire des 2 en décimal)
Si on écrit les décimales (qui sont périodiques de période 0011) uniquement jusqu'à la 24ème, ça fait
= 1.001100110011001100110011 x 10^(-10)
Et, comme l'ordi. n'en stocke que 23 et qu'il arrondi au dessus lorsque la 24 décimale est un 1, ça donne
= 1.00110011001100110011010 x 10^(-10)
Ensuite, l'exposant est -10(binaire) [c'est à dire -2 décimal] mais l'ordi. ne stocke pas l'exposant, mais 127(décimal)+Exposant donc ici, ça fait
01111111 - 10 = 01111101
Et arrivé à ce point, si tu ne sait même pas comment on fait une soustraction en binaire... j'ai peur qu'il ne te faille reprendre tes cours... tout au début du début.

Quand à tes "pourquoi ce nombre" ben... parce que si tu regarde ton cours, tu verra qu'un flottant est stocké sous la forme :
Mantise(sans le 1 avant la virgule) suivi de (127+Exposant)
Ce qui ici donne donc
0011001100110011001101001111101

Totalement tout exactement pareil pour 0.2(décimal)

Et concernant la conversion binaire/hexa, regarde le chapitre I), paragraphe 1) de ton cours : ça devrait y être.
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

z^42
Membre Naturel
Messages: 60
Enregistré le: 21 Sep 2014, 15:18

par z^42 » 12 Nov 2014, 22:16

Merci beaucoup pour ton explication. J'ai compris.

Oui je sais convertir. Et j'ai eu 13 en partiel, j'ai perdu beaucoup de points parce que j'ai confondu 2 méthodes :mur:

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 9 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite