JavaRush /Blog Java /Random-FR /Nombres réels dans la mémoire de l'ordinateur. Explicatio...
Marianna
Niveau 9
Москва

Nombres réels dans la mémoire de l'ordinateur. Explication.

Publié dans le groupe Random-FR
Bon après-midi En étudiant la conférence « Nuances du travail avec les nombres réels » de la première quête (section 2. La structure des nombres à virgule flottante) et des conférences supplémentaires sur le sujet, beaucoup ont dû rencontrer de nombreuses questions sur ce sujet. Au départ, j'ai essayé de me donner les réponses nécessaires, et maintenant je vous les propose pour vous aider à bien comprendre dans un ordre logique cohérent. 1. Systèmes de nombres décimaux et binaires. 1.1 Le système de nombres décimaux est l'un des systèmes les plus courants ; c'est celui que nous utilisons pour tous les calculs mathématiques non informatiques à l'école, à l'université, dans la vie. Il utilise les nombres 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 (arabe) – 10 chiffres au total. Il existe également une notation romaine pour les nombres, qui n'est cependant pratiquement plus utilisée actuellement. Dans le système décimal, le comptage s'effectue en unités, dizaines, centaines, milliers, dizaines de milliers, centaines de milliers, millions, etc. - autrement dit, ce sont tous les chiffres du numéro. Le chiffre d'un nombre est la position (place) du chiffre dans l'enregistrement du numéro. Le chiffre le plus bas des nombres naturels (et le moins significatif ) est le chiffre des unités (le plus à droite). Pourquoi est-il le plus insignifiant ? Car en supprimant le chiffre unitaire d'un nombre, le nombre lui-même changera peu (par exemple, les nombres 345 et 340). Ensuite, le deuxième chiffre est le chiffre des dizaines, etc. Qu'est-ce-que tout cela veut dire? Prenons n'importe quel entier du système décimal et décomposons-le en chiffres . 3297 = 3*1000 + 2*100 + 9*10 + 7 Ainsi, on constate que le nombre 3297 contient 3 unités du quatrième chiffre (soit 3 mille), 2 unités du troisième chiffre (2 centaines), 9 unités du deuxième chiffre (9 dizaines) et 7 unités du premier chiffre . En d’autres termes, ce nombre est trois mille deux cent quatre-vingt-dix-sept et il est donc positionnel . Qu’en est-il des chiffres des nombres fractionnaires (réels) ? Les chiffres des nombres fractionnaires (leur partie fractionnaire) sont appelés : dixièmes, centièmes, millièmes, dix millièmes, etc. Plus le chiffre est éloigné de la virgule décimale (de toute la partie du nombre), moins il est significatif (en l'écartant, la valeur du nombre changera peu). Par exemple, prenons n'importe quel nombre fractionnaire présenté sous forme décimale : 25,076 = 2*10 + 5 +0*0,1 + 7*0,01 +6*0,001 Ainsi, on constate que le nombre fractionnaire 25,076 contient 2 dizaines, 5 unités, 0 dixième . , 7 centièmes et 6 millièmes. Le système décimal utilise 10 chiffres et des multiples de 10 décimales – d’où le nom « décimal ». 1.2 Le système de numérotation binaire est un système de numérotation utilisé dans presque tous les ordinateurs modernes et autres appareils électroniques informatiques. Pour enregistrer les nombres, il n'utilise que deux chiffres - 0 et 1. Afin de ne pas confondre le système numérique dans lequel le numéro est écrit, il est pourvu d'un indicateur en bas à droite (c'est la base du système numérique ), pour exemple : 1000₁₀ 1000₂ Ici, le premier nombre est le millier familier en système décimal, et celui du bas est le nombre dans la représentation du système binaire et il est égal dans le système décimal... 8 ! Comme le système décimal, le système binaire décompose également les nombres en chiffres . Chaque chiffre d'un nombre binaire est appelé un bit (ou chiffre ). (Si quelqu'un est intéressé, quatre bits sont un quartet (ou une tétrade), 8 bits sont un octet , 16 bits sont un mot , 32 bits sont un double mot ). Les bits (chiffres) sont également numérotés de droite à gauche, en commençant par zéro (contrairement au système décimal). Le bit droit le moins significatif, le moins significatif, a un numéro de séquence de 0 . Vient ensuite le premier bit, le deuxième , etc., plus le bit est ancien , plus il est significatif (par analogie avec le système décimal que nous comprenons - si vous supprimez ceux du nombre 1455, vous vous retrouverez avec le nombre 1450 - presque égal à la valeur initiale. Mais si vous supprimez les centaines, vous vous retrouverez avec le nombre 1050, qui est déjà loin de la valeur initiale, car la place des centaines est beaucoup plus significative (ordre élevé) que la place des unités ). Exemple. NE PAS LIRE ENCORE :))) Nombres réels dans la mémoire de l'ordinateur.  EN DÉVELOPPEMENT !!!  - 2 En bas, les bits de ce nombre binaire fractionnaire sont numérotés en rouge - au total nous avons 18 bits (chiffres) de ce nombre. Pour l'avenir, je voudrais noter que les nombres fractionnaires sont stockés dans la mémoire de l'ordinateur d'une manière complètement différente - cela sera discuté plus tard. En attendant, apprenons à convertir des nombres d'un système numérique à un autre. 2. Conversion d'entiers et de fractions du système décimal au système binaire et vice versa. 2.1 Conversion du décimal au binaire. 2.1.1 Nombres entiers. Afin de convertir un nombre décimal entier au système de nombres binaires, vous devez diviser ce nombre par 2, noter le reste de la division (il est toujours égal à 0 ou 1, selon que le nombre est pair ou impair) , et divisez à nouveau le résultat de la division par 2, notez à nouveau le reste de la division (0 ou 1) et divisez à nouveau le résultat de la deuxième division par 2. Continuez ainsi jusqu'à ce que le résultat de la division soit égal à un. Ensuite, nous notons tous les zéros et tous les uns résultants dans l'ordre inverse , en commençant par le résultat de division le plus récent, qui est toujours égal à 1. Remarque importante. Le résultat final de la division séquentielle de TOUT ENTIER par 2 finira toujours par être un (1) ! Si le résultat est supérieur à 1, nous continuons à diviser ce résultat par 2 jusqu'à obtenir un résultat. Et le résultat de la division par 2 ne peut être zéro (0) que dans un cas - c'est la division de zéro lui-même par 2. Exemple. Convertissons le nombre 145 du système décimal en binaire. 145/2 = 72 (reste 1 ) 72/2 = 36 (reste 0 ) 36/2 = 18 (reste 0 ) 18/2 = 9 (reste 0 ) 9/2 = 4 (reste 1 ) 4/2 = 2 (reste 0 ) 2/2 = 1 (reste 0 ) Maintenant, nous « collectons » notre nombre binaire dans l’ordre inverse. Nous obtenons le numéro 10010001. C'est fait ! Nuance intéressante 1. Convertissons le nombre 1 du système décimal en binaire. Dans le système binaire, ce nombre s'écrira également 1. Après tout, le résultat final de la division par 2, qui devrait être égal à 1, est déjà égal au nombre lui-même 1. 1₁₀ = 1₂ Nuance intéressante 2. Convertissons le nombre 0 du système décimal au binaire. Dans le système binaire, ce nombre s'écrira également 0. 0₁₀ = 0₂ 2.1.2 Nombres fractionnaires. Comment convertir des nombres fractionnaires en binaires ? Pour convertir une fraction décimale au système de nombres binaires, vous devez : a) convertir toute la partie de la fraction en système binaire selon l'algorithme étudié au paragraphe 2.1.1 b) multiplier la partie fractionnaire de la fraction par 2 , écrire le chiffre résultant du résultat AVANT le point décimal (toujours égal à 0 ou 1, ce qui est logique), puis multipliez SEULEMENT la partie fractionnaire du résultat obtenu par 2 à nouveau, notez le chiffre résultant du résultat AVANT la virgule décimale (0 ou 1) et ainsi de suite jusqu'à la fraction une partie du résultat de la multiplication devient égale à 0 ou jusqu'au nombre de décimales requis ( précision requise ) (égal au nombre de multiplications par 2). Ensuite, vous devez écrire la séquence résultante de zéros et de uns écrits DANS L'ORDRE après le point séparant les parties entières et fractionnaires du nombre réel (fractionnaire). Exemple 1. Convertissons le nombre 2,25 (2 virgule 25 centièmes) du système décimal au système binaire. Dans le système binaire la fraction sera égale à 10,01 . Comment avons-nous obtenu cela ? Le nombre se compose d'une partie entière (jusqu'à un point) - c'est 2 et d'une partie fractionnaire - c'est 0,25. 1) Traduction de la partie entière : 2/2 = 1 (reste 0 ) La partie entière sera 10 . 2) Traduction de la partie fractionnaire. 0,25 * 2 = 0,5 (0) 0,5 * 2 = 1,0 (1) La partie fractionnaire est devenue égale à 0 suite à une multiplication successive par 2. On arrête de multiplier. Maintenant, nous « collectons » la partie fractionnaire DANS L'ORDRE - nous obtenons 0,01 dans le système binaire. 3) Ajoutez les parties entières et fractionnaires - nous obtenons que la fraction décimale 2,25 sera égale à la fraction binaire 10,01 . Exemple 2. Convertissons le nombre 0,116 du système décimal au système binaire. 0,116 * 2 = 0,232 (0) 0,232 * 2 = 0,464 (0) 0,464 * 2 = 0,928 (0) 0,928 * 2 = 1,856 (1) //rejeter la partie entière de ce résultat 0,856 * 2 = 1,712 (1 ) //rejeter toute la partie de ce résultat 0,712 * 2 = 1 , 424 (1) //rejeter toute la partie de ce résultat 0,424 * 2 = 0 , 848 (0) Comme on peut le voir, la multiplication continue encore et encore , la partie fractionnaire du résultat ne devient pas égale à 0. Ensuite, nous décidons de convertir notre fraction décimale en binaire avec une précision de 7 décimales (bits) après le point (dans la partie fractionnaire). Rappelons-nous ce que nous avons étudié sur les bits insignifiants - plus le bit (bit) est éloigné de la partie entière, plus il nous est facile de le négliger (explication dans la section 1 du cours, qui a oublié). On obtient la fraction binaire 0,0001110 avec une précision de 7 bits après le point. 2.2 Conversion du binaire en décimal. 2.2.1 Nombres entiers. Pour traduire l'ensemblenombre du système de numération binaire au décimal, il faut diviser ce nombre en chiffres (bits) et multiplier chaque chiffre (bit) par le nombre 2 jusqu'à un certain degré positif (ce degré commence à compter de droite à gauche à partir du moins significatif (bit de droite) et commence à 0 ) . Autrement dit, la puissance de deux est égale au nombre d'un bit donné (mais cette règle non écrite ne peut être utilisée que dans le cas de conversion d'entiers , puisque pour les nombres fractionnaires la numérotation des bits commence dans la partie fractionnaire, qui se traduit dans le système décimal différemment ). Ensuite , vous devez additionner les produits résultants. Exemple. Convertissons le nombre binaire 110011 au système de nombres décimaux. 110011₂ = 1*2⁵ + 1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º = 32 +16 +0 + 0 + 2 + 1 = 51₁₀ En conséquence, nous obtenons le nombre 51 dans le système binaire . Pour information, vous trouverez ci-dessous un tableau des premières puissances du nombre 2 . NE PAS LIRE ENCORE :))) Nombres réels dans la mémoire de l'ordinateur.  EN DÉVELOPPEMENT !!!  - 5 ! Veuillez noter que la puissance zéro d'un nombre est toujours 1. 2.2.2 Nombres fractionnaires. Afin de convertir un nombre fractionnaire (réel) binaire en décimal , vous devez : a) convertir sa partie entière en nombre décimal selon l'algorithme du paragraphe 2.2.1 ; b) traduire sa partie fractionnaire comme suit. Il faut présenter la partie fractionnaire comme la somme des produits de chiffres par deux , élevée à une certaine puissance négative (la puissance du premier chiffre après le point (après toute la partie de la fraction) sera égale à -1, car le deuxième chiffre après le point sera égal à -2, etc.) Résultat ce montant sera la partie fractionnaire du nombre dans le système décimal. Exemple. Convertissons le nombre 10111.01 au système binaire. 10111.01₂ = (1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º) . (0*2ˉ¹ + 1*2ˉ²) = (16 + 0 + 4 + 2 + 1) . (0 + 0,25) = 23,25₁₀ En conséquence, nous obtenons le nombre 23,25 dans le système numérique décimal. Le tableau des premières puissances négatives de 2 est donné ci-dessous. NE PAS LIRE ENCORE :))) Nombres réels dans la mémoire de l'ordinateur.  EN DÉVELOPPEMENT !!!  - 7 2.2.3 Formule générale pour convertir des nombres binaires en décimaux. Donnons une formule générale pour convertir des nombres binaires en décimaux (parties entières et fractionnaires). NE PAS LIRE ENCORE :))) Nombres réels dans la mémoire de l'ordinateur.  EN DÉVELOPPEMENT !!!  - 4A est un nombre dans le système de nombres binaires ; La base du système numérique est 2 (ce qui signifie que chaque bit est multiplié par 2 à la puissance) ; n— nombre de chiffres entiers (bits) ; m est le nombre de chiffres fractionnaires (bits) du nombre . Le premier bit de la partie entière à partir du point de division est surligné en rouge . Il est toujours multiplié par 2 à la puissance zéro. Le bit suivant avant (à gauche) est multiplié par 2 à la première puissance, etc. Le premier bit de la partie fractionnaire à partir du point de division est surligné en vert . Il est toujours multiplié par 2 à la puissance moins première. Le bit suivant à droite est multiplié par 2 à la puissance moins la seconde, etc. 3. Notation scientifique : une notation normalisée dans les deux systèmes. Mantisse, exposant, degré de l'exposant. 3.1 Forme exponentielle d'écriture d'un nombre. Auparavant, nous avons étudié un schéma détaillé pour enregistrer les nombres de position par chiffre. Prenons le nombre 0.0000000000000000000016 . Il comporte une très longue entrée sous forme standard . Et sous forme exponentielle , cela ressemblera à ceci : 1,6 * 10ˉ²¹ Alors, quelle est la forme exponentielle d'un nombre et comment représenter un nombre sous cette forme ? La notation scientifique d'un nombre est une représentation de nombres réels sous forme de mantisse et d'exposant . Pratique pour représenter des nombres très grands et très petits, ainsi que pour unifier leur écriture. N = M * pⁿN est le nombre à écrire, M est la mantisse du nombre, p est la base (égale à la base du système numérique du nombre donné), n (entier) est l'ordre (degré , peut être positif et négatif), p à la puissance n sont les nombres caractéristiques (exposant, c'est-à-dire base élevée à une puissance (ordre)). Une nuance importante. Si la partie entière du nombre décimal est différente de 0 , alors l'ordre (degré) de l'exposant sera positif , si la partie entière est égale à 0 , le degré de l'exposant sera négatif . 3.2 Forme normale et normalisée d'écriture des nombres. La forme normale d'un nombre est une forme dont la mantisse (sans tenir compte du signe) se situe sur le demi-intervalle [0,1], soit 0 <= M < 1. Cette forme d'écriture a un inconvénient : certains nombres sont écrits de manière ambiguë (par exemple, 0,0001 peut s'écrire 0,000001*10², 0,00001⋅10¹, 0,0001⋅10º, 0,001⋅10ˉ¹ et ainsi de suite). Par conséquent, une autre forme d'enregistrement est répandue (notamment en informatique) - normalisée, dans lequel la mantisse d'un nombre décimal prend des valeurs de 1 (inclus) à 10 (exclusif), c'est-à-dire 1 <= M < 10 (de même, la mantisse d'un nombre binaire prend des valeurs de 1 à 2 ). En d'autres termes, la mantisse dans le système décimal doit être un nombre fractionnaire compris entre 1,0 (inclus) et 10 (exclusif) , c'est-à-dire la partie entière de la mantisse doit contenir un seul chiffre et la partie fractionnaire n'est pas mathématiquement limitée. L’avantage de la forme normalisée est que tout nombre (sauf 0) est écrit de manière unique. L'inconvénient est qu'il est impossible de représenter 0 sous cette forme, c'est pourquoi la représentation des nombres en informatique fournit un signe spécial (bit) pour le nombre 0. 3.3 Exemples d'écriture de nombres décimaux sous forme exponentielle normalisée. Regardons des exemples. Exemple 1. Écrivons le nombre décimal 1015000 (un million quinze mille) sous forme exponentielle normalisée. Le système numérique de ce nombre est décimal, la base sera donc 10 . Sélectionnons la mantisse . Pour ce faire, imaginez le nombre comme une fraction dont la partie fractionnaire sera égale à zéro (puisque le nombre est un entier) : 1000000,0. Si la partie entière du nombre est supérieure à 0 , déplacez le point vers la gauche de sa position initiale (à l'intérieur de la partie entière) jusqu'à ce qu'il ne reste plus qu'un chiffre dans la partie entière . Après cela, nous mettons un point. Nous supprimons les zéros insignifiants (à la fin du nombre). On obtient la mantisse du nombre égal à 1,015 . Déterminons le degré (ordre) de la base du nombre. De combien de positions vers la gauche notre point séparant les parties entières et fractionnaires a-t-il été déplacé ? Pour six postes. Cela signifie que la commande sera de 6 . Dans ce cas, l'ordre est positif (on a déplacé le point dans la partie entière du nombre non égale à 0). L'entrée finale sous forme normalisée : 1,015 * 10⁶ . On peut écrire ce nombre sous cette forme : 1,015E6 (où E6 est l'exposant d' un nombre décimal, soit 10 à la puissance 6). Testons- nous . La notation exponentielle d'un nombre n'est rien de plus que le produit d'un nombre (mantisse) et d'un autre nombre (exposant). Que se passe-t-il si vous multipliez 1,015 par 10⁶ ? 1,015*10⁶ = 1,015*1 000 000 = 1015 000 . C'est exact. Cette approche (normalisée) permet de créer un enregistrement sans ambiguïténombres sous forme exponentielle, comme indiqué ci-dessus. Exemple 2. Écrivons le nombre réel décimal 0,0098 sous forme normalisée. Soulignons la base du nombre - elle est égale à 10 (système numérique décimal). Sélectionnons la mantisse du nombre - elle est égale à 9,8 (la partie entière du nombre est égale à zéro, ce qui signifie que nous déplaçons le point vers la droite jusqu'au premier chiffre significatif (situé dans la plage de 1 à 9 inclus) . Nous déterminons l'ordre du nombre - nous avons déplacé le point de trois positions, ce qui signifie que l'ordre est 3. Positif est-il négatif ou négatif ? Puisque nous avons déplacé le point vers la droite (dans la partie fractionnaire du nombre), le l'ordre (puissance) sera négatif . L'enregistrement final du nombre sous forme normalisée est 9,8 * 10ˉ³ ou 9,8E-3 . Vérifions nous-mêmes à nouveau. Multipliez 9,8 par 10ˉ³. 9,8 * 10ˉ³ = 9,8 * 0,001 = 0,0098 . C'est vrai. Exemple 3. Écrivons le nombre réel décimal 3,56 sous forme normalisée. Sélectionnez la base du nombre - elle est égale à 10 (système de nombre décimal). Sélectionnez la mantisse du nombre - elle est égale à... 3,56 (le nombre entier une partie du nombre est un seul chiffre, différent de 0. Cela signifie que le point n'a pas besoin d'être déplacé nulle part, le nombre lui-même sera la mantisse.) Soulignons l'ordre de la base : de quel nombre la mantisse doit-elle être , égal au nombre lui-même, être multiplié pour qu'il ne change pas ? Par unité. Cela signifie que la commande sera nulle. L'enregistrement final du nombre sous forme normalisée est 3,56 * 10º ou 3,56E0. 4. Stockage des nombres réels dans la mémoire de l'ordinateur : float et double. 4.1 Types flottant et double. Passons à la section clé de notre conférence. Comme nous le savons déjà, il existe deux types de nombres réels en Java : float et double . Le type float occupe 32 bits dans la mémoire de l'ordinateur et peut prendre des valeurs comprises dans la plage [3.4E-38 ; 3,4E+38) (c'est-à-dire dans la plage de 3,4*10ˉ³⁸ (inclus) à 3,4*10³⁸ (excluant)). Nuance importante 1. Les nombres flottants peuvent être positifs ou négatifs. Cette plage ci-dessus est présentée pour indiquer les modules de nombres inclus dans la plage flottante. Nuance importante 2. 10³⁸ est approximativement égal à 2¹²⁷ , respectivement, 10 ˉ³⁸ est approximativement égal à 2ˉ¹²⁷ . Ainsi, l'intervalle de valeurs absolues des nombres flottants peut s'écrire sous la forme [3,4 * 2ˉ¹²⁷ ; 3,4 * 2¹²⁷). Le type double occupe deux fois plus de mémoire informatique -64 bits et peut accepter des valeurs décimales dans la plage [-1,7E+308 ; 1,7E+308) respectivement. 4.2 Forme exponentielle normalisée des nombres binaires. Nous savons que les nombres sont stockés sous forme binaire dans la mémoire de l'ordinateur. Prenons donc le nombre 1560.256 (type flottant) et convertissons-le en système binaire sous forme positionnelle : 11000011000.01000001100 . Vous pourriez penser que c'est ainsi qu'ils seront stockés dans la mémoire de l'ordinateur. Mais ce n'est pas vrai ! Dans la mémoire de l'ordinateur, les types float et double ( vrais types à virgule flottante ) sont stockés sous forme exponentielle normalisée , mais la base de la puissance est 2 au lieu de 10. Cela est dû au fait que, comme indiqué ci-dessus, toutes les données dans l'ordinateur est représenté sous forme binaire (bits ). Une certaine quantité de mémoire informatique est allouée à un numéro. Représentons le nombre positif 15,2 sous forme exponentielle normalisée : 1,52*10¹ . Représentons ensuite son "jumeau" binaire 1111.00110011001 également en notation exponentielle normalisée, en utilisant le même algorithme : 1) La base sera égale à 2 2) La mantisse sera égale à 1,11100110011001 3) Le degré sera positif et égal à 3 (le point est décalé de 3 bits vers la gauche) en système décimal. Convertissons-le en système binaire : 11 . Ainsi, sous forme normalisée exponentielle binaire, ce serait 1,11100110011001 * 2¹¹. 4.3 Stockage de la forme binaire normalisée exponentielle d'un nombre flottant dans la mémoire de l'ordinateur. Nous avons donc compris qu'un nombre réel serait stocké dans la mémoire de l'ordinateur sous forme binaire normalisée exponentielle . À quoi cela ressemblera-t-il en mémoire ? Prenons le type float . L'ordinateur alloue 32 bits pour chaque nombre flottant . Ils sont répartis comme suit . Cette figure montre schématiquement la mémoire allouée pour un nombre flottant de 32 bits dans un ordinateur. NE PAS LIRE ENCORE :))) Nombres réels dans la mémoire de l'ordinateur.  EN DÉVELOPPEMENT !!!  - 5 La numérotation des bits est indiquée en rouge . Le vert indique un morceau de mémoire alloué (1 bit) pour stocker le signe du nombre. Le jaune indique un morceau de mémoire alloué pour stocker la puissance décalée (ordre) de la forme exponentielle du nombre (8 bits). Bleudésigne un morceau de mémoire alloué pour stocker la mantisse normalisée d'un nombre sans unité implicite (23 bits). Regardons de plus près. 1) Signer le bit. Le bit de poids fort (premier à gauche) est toujours alloué pour stocker le signe du nombre (1 si le nombre est négatif, et 0 si le nombre est positif). Une exception peut être le nombre zéro - en programmation, zéro peut être à la fois négatif et positif . 2) Viennent ensuite les bits du degré (ordre) de l'exposant de base 2 . Pour cela, 8 bits sont alloués. Le degré exposant des nombres flottants , comme nous le savons, peut être à la fois négatif (pour les nombres dont la partie entière est 0, voir paragraphe 3.3) et positif (pour les nombres dont la partie entière est différente de zéro) et varie de 2ˉ¹²⁷ à 2¹²⁷ . En théorie, il faudrait allouer un bit pour déterminer le signe de l'exposant, comme c'est le cas pour le bit de signe. Mais ce n'est pas vrai. Afin de ne pas perdre un peu à déterminer le signe de l'exposant, les nombres flottants ajoutent un décalage à l'exposant d'un demi-octet +127 (0111 1111). Ainsi, au lieu d'une plage de puissances de 2ˉ¹²⁷ à 2¹²⁷, l'ordinateur stocke une plage de puissances de 0 à +254 - toutes les valeurs de puissance sont positives , il n'est pas nécessaire de perdre un octet supplémentaire sur le signe. Il s'avère que la valeur de l'exposant est décalée de moitié par rapport à la valeur possible. Cela signifie que pour obtenir la valeur réelle de l'exposant, vous devez soustraire ce décalage de la valeur stockée en mémoire. Si la valeur de l'exposant stockée en mémoire est inférieure au décalage (+127), alors l'exposant est négatif : c'est logique. Exemple. Effectuons un décalage de degré négatif -18 . On y ajoute le décalage +127, on obtient la valeur du degré +108 (n'oubliez pas le degré 0 dans le calcul). Convertissons le diplôme sous forme binaire : 1101100 Mais 8 bits de mémoire sont alloués au diplôme, et nous obtenons ici un nombre de 7 bits. À la place du chiffre (bit) haut vide et inoccupé, l’ordinateur ajoute 0. Le résultat est que ce degré sera stocké dans la mémoire de l’ordinateur sous le nom 01101100 . Voyons : +108 < +127, ce qui signifie que le degré est en réalité négatif. Considérez le tableau intéressant suivant : il montre toutes les valeurs possibles des puissances des formes normalisées des nombres flottants dans les systèmes binaires et décimaux. Comme nous pouvons le voir, dans le système binaire, +127 correspond exactement à la moitié d'un octet entier (8 bits). 3) Les 23 bits restants sont réservés à la mantisse NE PAS LIRE ENCORE :))) Nombres réels dans la mémoire de l'ordinateur.  EN DÉVELOPPEMENT !!!  - onze. Mais pour une mantisse binaire normalisée, le bit le plus significatif (c'est-à-dire la partie entière de la mantisse normalisée) est toujours égal à 1 (appelé un implicite ), puisque le numéro de la mantisse est compris entre 1<=M<2 (et rappelons également le paragraphe 2.1.1 du cours). La seule exception est le nombre 0. Il ne sert à rien d'écrire une unité dans les 23 bits alloués et de gaspiller de la mémoire, donc le reste de la mantisse (sa partie fractionnaire) est écrit dans les 23 bits alloués. Il s'avère que la partie significative du nombre flottant a une longueur de 24, dont un bit de moins est stocké. Une nuance importante. Rappelons-nous que lors de la conversion de nombres fractionnaires décimaux en nombres binaires, la partie fractionnaire du système binaire s'avérait souvent énorme. Et nous n'avons que 32 bits pour stocker un nombre flottant. Dans ce cas, les chiffres les plus bas et les moins significatifs de la fraction binaire (rappelez-vous le paragraphe 2.1.2 de ce cours) ne seront pas inclus dans la mémoire allouée et l'ordinateur les négligera . L’exactitude du nombre sera perdue , mais, voyez-vous, c’est minime. En d’autres termes, la précision des flottants fractionnaires est de 6 à 7 décimales. 4.4 Stockage de la forme binaire normalisée exponentielle du nombre double dans la mémoire de l'ordinateur. Les nombres réels de type double sont stockés dans la mémoire de l'ordinateur de la même manière que les nombres flottants, à l'exception de certaines caractéristiques. Un nombre double a 64 bits dans la mémoire de l'ordinateur. Ils sont répartis comme suit (également dans l'ordre de gauche à droite) : 1) Bit de signe (voir paragraphe 4.3). On comprend que le numéro de ce bit sera 63 . 2) Diplôme (ordre). Les nombres doubles se voient attribuer 11 bits pour les stocker . Un changement de degré est également effectué , mais pour les nombres doubles, il sera égal à +1023. 3) Mantisse (partie importante). Les nombres doubles se voient attribuer 52 bits (chiffres) pour les stocker. De plus, la partie entière exacte de la mantisse ( unité implicite ) n'est pas stockée en mémoire . Il convient également de noter que la précision des doubles fractionnaires est d'environ 16 décimales . 4.5 Exemples de représentation d'un nombre réel du système décimal dans la mémoire de l'ordinateur. Et le dernier point de notre cours sera un exemple de conversion d'un nombre fractionnaire du système de nombres décimaux sous la forme de son stockage dans la mémoire de l'ordinateur pour consolider la compréhension du sujet. Exemple 1. Prenez un nombre-4,25 type flotteur. Présentons-le sous forme exponentielle normalisée dans le système de nombres binaires, en nous souvenant de tout ce que nous avons abordé dans cette conférence. 1) Convertir la partie entière du nombre sous forme binaire : 4/2 = 2 (reste de la division 0 ) 2/2 = 1 (reste de la division 0 ) La partie entière sera égale à 100 dans le système binaire. 2) Convertissez la partie fractionnaire du nombre sous forme binaire. 0,25*2 = 0,5 ( 0 ) 0,5*2 = 1,0 ( 1 ) La partie fractionnaire sera égale à 0,01 dans le système binaire. 3) Ainsi, -4,25₁₀ = -100,01₂ . 4) Convertissons le nombre -100,01₂ sous forme exponentielle normalisée dans le système de nombres binaires (ce qui signifie que la base de la puissance sera 2). -100.01₂ = -1.0001 *2² Convertissons la valeur du degré du format décimal au format binaire . 2/2= 1 (reste 0 ) Le degré est de 10₂. Nous obtenons que le nombre -4,25₁₀ dans sa forme normalisée exponentielle binaire sera égal à -1,0001 * 2¹º. Écrivons à quoi il ressemblera dans la mémoire de l'ordinateur. Le bit de signe sera 1 (nombre négatif). Le décalage de l'exposant est égal à 2+127 = 129₁₀ = 10000001₂ Nous supprimons l'implicite de la mantisse , nous obtenons 000100000000000000000000 ( nous remplissons les bits de poids faible inoccupés avec des zéros ). En bout de ligne. 1 10000001 00010000000000000000000 - c'est ainsi que le nombre -4,25 est stocké dans la mémoire de l'ordinateur. Exemple 2. Convertissez le nombre flottant 0,75₁₀ dans un format de stockage binaire dans la mémoire de l'ordinateur. Le résultat devrait être 0 01111110 100000000000000000000000 . Merci de votre attention.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION