Reprezentarea numerelor în punctul Floating binar
De multe ori este necesar să se ocupe de un număr foarte mare (de exemplu, distanța dintre stele) sau vice-versa este un număr foarte mic (de exemplu, atomi, sau electroni dimensiuni). În aceste calcule ar trebui să utilizeze un număr de descărcare foarte mare. În același timp, nu avem nevoie să știe distanța dintre stele, cu o precizie milimetrică. Pentru calcule cu aceste valori ale punctului fix ineficiente.
Forma algebrică zecimal care aritmetică este utilizat pentru înregistrarea acestor numere. Numărul scris în forma mantisa înmulțit cu 10 la ordinea de afișare a numărului, de exemplu:
0,2 × 10 mai;
× 10 -38 0,16
folosit, de asemenea, o formă de înregistrare a numerelor binare. Acesta vă permite să lucrați cu numere cu o gamă largă de valori ale acestei forme de scriere numit intrare numere în virgulă mobilă. Să ne amintim că mantisa nu poate fi mai mare decât unul, și după virgulă în mantisa nu mozhetzapisyvatsya zero.
În programarea înregistrarea acestor numere sunt formate variabile speciale. În C, ea formate cum ar fi float și double. Acestea sunt descrise de standardul IEEE 754. Aceste aceleași standarde adoptate de cele mai multe alte limbaje de programare. Atunci când se ocupă cu numere în virgulă mobilă este, de obicei, nici o dificultate în compoziția limbajului de programare. Toate numerele de reformatare efectuate prin intermediul limbajului de programare. Cu toate acestea, transferul de date sau atunci când se lucrează cu microcontrolere de multe ori trebuie să scrie un program într-un limbaj de programare de asamblare și apoi poate necesita cunoașterea reprezentării interne a numerelor.
Pentru a înregistra numărul de plutitoare-un singur punct de precizie necesar tridtsatidvuhbitovoe cuvânt. Pentru a scrie numere cu dublă precizie necesare shestidesyatichetyrohbitovoe cuvânt. În cele mai multe cazuri, numărul stocate în mai multe celule vecine de memorie procesor. Formatează numărul în formatul unei singure precizie plutitoare numere în virgulă și în virgulă mobilă dublă precizie prezentată în figură
Figura 1. Formatează un număr în virgulă flotantă
În figura litera S reprezintă semnul numerelor 0 - un număr pozitiv, 1 - număr negativ.
Grupul de biți, desemnat e ectopic proiectat să înregistreze numărul de ordine. Offsetul se cere să nu intre în numere binare în virgulă mobilă este un alt semn. Pentru extrauterină este întotdeauna un număr pozitiv. Binar float precizie unică pentru înregistrarea de ordinul a opt biți alocate. Pentru el, deplasarea de ordinul a 127 la comandă în ectopic binar cu virgulă mobilă dublu-precizie atribuit dublu 11 biți. Acesta compensat număr este de ordinul a - 1023.
Mantisa după punctul zecimal poate fi cifrele prezente 1 9 și binare - 1. Prin urmare, doar un singur bit într-un număr în virgulă flotantă nu este alocat după punctul binar la unitatea de stocare. Unitatea se înțelege, la fel ca punctul binar. În plus, numerele de format în virgulă mobilă, este acceptat faptul că mantisa este întotdeauna mai mare decât 1. Aceasta este, intervalul de valori ale mantisei este în intervalul 1 - 2.
Luați în considerare câteva exemple:
1) Se determină numărul de punct care se află în vecinătate patru octeți plutitoare:
11000001 01001000 00000000 00000000
- Bitul de semn egal cu 1 indică faptul că numărul este negativ.
- Exponent 10000010 corespunde numărului zecimal 130. Scăzând numărul 127 130, au numărul 3.
- Acum vom scrie mantisa: 1100 1000 0000 0000 0000 0000
- Și, în sfârșit, vom defini un număr zecimal: 1100,1b = 12,5d
2) Se determină numărul de punct care se află în vecinătate patru octeți plutitoare:
11000011 00110100 00000000 00000000
- Bitul de semn egal cu 1 indică faptul că numărul este negativ.
- Exponent 10000110 corespunde cu numărul zecimal 134. Scăzând numărul 127 134, obținem numărul 7.
- Acum vom scrie mantisa: 1.011 0100 0000 0000 0000 0000
- Și, în sfârșit, vom defini un număr zecimal: 10110100b = 180D
Pentru a scrie un zero în reprezentarea binară a numerelor în virgulă mobilă este suficient pentru a scrie în ordinea numărului de 00000000b strămutate. Mantisa nu este important. Numărul în care toți octeți sunt egali cu 0, de asemenea, se încadrează în acest interval de valori.
Infinity printre virgulă flotantă corespunde ordinii offset și mantisei 11111111b, egal cu 1,0. În același timp, există infinit negativ și infinit pozitiv (preaplin și underflow), care sunt adesea afișate pe un monitor de calculator sau un dispozitiv de afișare ca un microprocesor + INF și -INF.
Toate celelalte combinații de biți de mantisa virgulă mobilă (inclusiv toate unitățile) cu un mod de compensare percepută 11111111b ca un limbaj de programare nu este numărul și afișat pe ecran: NaN.
Alte tipuri de coduri binare: