Formate de reprezentare a numerelor întregi

Numerele din computer sunt stocate în conformitate cu formatul. Un format este un acord sau reguli pentru a reprezenta un număr ca o secvență de biți.

Unitatea minimă de stocare a datelor în computer este de 1 octet. Există următoarele formate pentru reprezentarea numerelor întregi: octet (jumătate de cuvânt), cuvânt (include 2 octeți), cuvânt dublu (4 octeți), cuvânt extins (8 octeți). Biturile care formează aceste formate sunt numite biți. Astfel, în byte 8 biți, în cuvânt - 16 biți, și în cuvântul dublu - 32 de biți. În partea stângă sunt notele de vârf, iar în partea dreaptă sunt cele mai tinere. Fiecare dintre aceste formate poate fi semnat (Figura 5.1) pentru reprezentarea numerelor pozitive și negative sau nesemnate (Figura 5.2) pentru reprezentarea numerelor pozitive.







Fig. 5.1. Formate semnatate pentru reprezentarea numerelor întregi

Cel mai în vârstă este semnul. În Fig. 5.1 cifra semnului este notată cu simbolul S. Dacă este egal cu 0, atunci numărul este considerat pozitiv și dacă bitul este 1, numărul este considerat negativ.

Fig. 5.2. Formatele de reprezentare a întregului model nesignificat

În general, intervalul de valori reprezentat de formatele de semne pentru reprezentarea numerelor întregi (Tabelul 5.1) este determinat de formula

-2 n-1 £ X £ 2 n-l-l,

iar pentru un format nesemnat este determinat de formula

0 £ X £ 2 n-1,

unde n este numărul de cifre din format.

Tabelul 5.1. Formate de reprezentare a numerelor întregi într-un calculator

0; 4294967295

5.1.2. Coduri directe și suplimentare
reprezentare a numerelor binare

În codul forward, bitul cel mai semnificativ codifică semnul unui număr (0 pentru pozitiv, 1 pentru negativ) și biții rămași pentru un modul de număr.

Exemplul 5.1. Numărul 11 ​​din codul forward va fi reprezentat ca 0 | 1011n. și numărul -11 - ca 1 | 1011n. # 9633;

În codul suplimentar, un număr pozitiv este, de asemenea, codat ca în codul forward. Pentru a reprezenta un număr negativ în codul suplimentar, există două moduri. Când se reprezintă numerele în codul suplimentar, se folosește operația de inversiune - înlocuirea bitului cu cel opus, adică 0 cu 1 și 1 cu 0.

Regula 5.1. (reprezentarea bițială a unui număr negativ în codul suplimentar) Reprezentați modulul numărului negativ din codul forward și inversați toate cifrele din stânga celei mai joase (dreapta).

Exemplul 5.2. Reprezentați numărul -11 în codul suplimentar utilizând reprezentarea bițială.

Soluția. Traducem modulul acestui număr într-un sistem binar: 11 = 10112 și îl reprezintă în codul direct: 0 | 1011n. Unitatea cea mai mică este ultima, deci lăsăm-o neschimbată, iar celelalte cifre din stânga sunt inversate (Figura 5.3).

Ca rezultat, obținem 1 | 0101d - reprezentarea numărului -11 în codul suplimentar. # 9633;

Fig. 5.3. Reprezentarea numărului -11 în codul suplimentar

Regula 5.2. (reprezentarea aritmetică a unui număr negativ în codul suplimentar) Adăugați la numărul negativ de 2 m. unde m este numărul de biți în reprezentarea binară sau în acest format, iar numărul rezultat este convertit într-un sistem de numere binare. Pentru octetul 2 8 = 256, pentru cuvântul 2 16 = 65 536, pentru cuvântul dublu 2 32 = 4 294 967 296.

Din aceste reguli putem concluziona că numerele pozitive în cazul creșterii numărului de cifre sunt completate de la stânga la zero, iar cele negative de către ele.

Exemplul 5.3. Reprezentați numărul -11 în codul suplimentar prin reprezentarea aritmetică.

Soluția. Fie ca este necesar să obțineți m = 5 biți de cod suplimentar. Calculăm summand 2 m = 2 5 = 32. Executăm adăugarea și traducerea în sistemul binar:

-11 + 32 = 21 = 101012.

Rezultatul obținut corespunde reprezentării numărului -11 din codul suplimentar.

Pentru m = 8, 28 = 256:

-11 + 256 = 245 = 111101012.

Reprezentarea numărului -11 a fost completat cu unități la stânga de până la 8 cifre. # 9633;

De asemenea, este posibilă inversarea conversiei numerelor negative scrise în codul suplimentar.

Regula 5.3. (Definiție bițială a valorii unui număr negativ înscris în codul suplimentar) Algoritmul de determinare a valorii unui număr negativ din codul suplimentar constă în următorii pași.

1. Invertați toate cifrele la stânga celui mai mic (dreapta) unitate.

2. Traduceți numărul de la sistemul binar la sistemul zecimal în conformitate cu regula 4.1.

3. Înmulțiți rezultatul cu -1.

Exemplul 5.4. Determinați ce număr zecimal este codificat de numărul 1 | 0101d utilizând o definiție bitwise.

Soluția. Invertim cifrele numărului:

Să traducem numărul de la sistemul binar la numărul zecimal:

Multiplicați rezultatul cu -1 și obțineți numărul -11. # 9633;

Regula 5.4. (definiția aritmetică a unui număr negativ înscrisă în codul suplimentar) Traduceți numărul binar în sistemul numeric zecimal și scădeați numărul numărului rezultat de la numărul 2 m. unde m este numărul de biți din reprezentarea binară.

Exemplul 5.5. Determinați ce număr zecimal este codificat de numărul 1 | 0101d utilizând o definiție aritmetică.







Soluția. Să traducem numărul de la sistemul binar la numărul zecimal:

Se scade din rezultatul obținut rezultatul numărul 2 m = 2 5 = 32, deoarece numărul binar este format din 5 cifre:

Rezultatul este un număr zecimal de -11. # 9633;

Numerele din formatele de caractere sunt scrise în codul suplimentar, iar în formatele nesemnate, ele sunt scrise în codul direct.

Este necesară introducerea unui cod suplimentar pentru a adăuga și a scădea numerele pozitive și negative fără transformări.

Exemplul 5.6. Adăugați 21 și -11 în sistemul binar.

Soluția. Traducem termenii într-un cod suplimentar:

Vom folosi regulile aritmetice binare:

1 + 1 = 10 (cu transferul unității la următoarea cifră).

Adăugați două numere binare în coloană, luând în considerare faptul că transferul unei unități de la semnul semnat este ignorat:

Ca rezultat, numărul 10 este primit - suma de 21 și -11 fără transformări suplimentare. # 9633;

Formatele de întregi un cuvânt și un cuvânt dublu sunt stocate în memoria calculatorului în ordine inversă, adică mai întâi octetul inferior și apoi cel mai vechi. De exemplu, cuvântul B5DE16 va fi stocat în memorie, așa cum se arată în Fig. 5.4.

Fig. 5.4. Localizarea cuvântului B5DE16 în memoria calculatorului

Această locație de octeți este convenabilă pentru operațiile cu numere, deoarece calculele încep cu cifre de ordin inferior, astfel încât acestea sunt localizate mai întâi.

5.2. Reprezentarea numerelor reale
pe un computer

Numerele reale sunt reprezentate sub forma unui număr în virgulă mobilă (un punct) al formularului:

unde M este mantisa (partea semnificativă a numărului); n este baza sistemului numeric; P este ordinea numărului.

Exemplul 5.7. Numărul 2.5 × 10 18 are o mantisă egală cu 2,5, iar ordinea este egală cu 18. # 9633;

O mantisă se numește normalizată dacă valoarea absolută se situează în intervalul:

1 / n £ | M | <1,

unde n este baza sistemului numeric.

Această condiție înseamnă că prima cifră după virgulă nu este zero, iar valoarea absolută a mantistei nu depășește una.

Un număr cu mantisă normalizată se numește normalizat.

Exemplul 5.8. Prezentați numerele -245.62 și 0.00123 sub forma unui număr în virgulă mobilă.

Soluția. -245.62 număr poate fi reprezentat sub forma ordinului -245.62 × 10 0. mantisa acest număr nu este normalizat, deci împărțiți-l cu 3. 10 în timp ce ordine crescătoare:

-0,24652 × 10 3.

Ca rezultat, numărul -0,24562 × 10 3 este normalizat.

Numărul 0.00123 sub forma unui număr de ordinul de 0.00123 × 10 0 nu este normalizat, deoarece mantisa nu este normalizată. Înmulțim mantisa cu 10 2. în timp ce diminuăm ordinea:

0,123 × 10 -2.

Ca urmare, numărul de 0,123 × 10 -2 este normalizat. # 9633;

În acest exemplu, pentru a normaliza mantisa, virgula sa mutat spre dreapta sau spre stânga. Prin urmare, astfel de numere sunt numite numere în virgulă mobilă. Spre deosebire de numerele punctelor fixe, ele accelerează foarte mult operațiile aritmetice, de fiecare dată când este necesar să se normalizeze mantisa numerelor în virgulă mobilă.

Pentru bazate pe reprezentarea IEEE-754 standard a unui număr real într-un calculator m + p + 1 biți, alocate după cum urmează (Figura 5.5.): Semn mantisă 1 bit; biți p-ordine; biți m mantisei.

Fig. 5.5. Structura formatului comun al unui număr în virgulă mobilă

Această reprezentare este numită (m, p) -format.

Intervalul reprezentării formelor X (m, p) este determinat din inegalitate:

£ X £ (1 - 2 - m - 1) ".

În acest caz, ordinea numărului P trebuie să satisfacă condiția
-2 p - 1 + 1 £ P £ 2 p - 1 - 1

Pentru numere reale în standardul IEEE-754 este utilizat (23,8) - și (52.11) -format numite formate simple și duble reale, respectiv (Tabelul 5.2.).

Pentru a reprezenta semnificația acestor ordine, numărul de secunde de la formarea planetei Pământ este de numai 10 18.

Regula 5.5. (conversia numerelor zecimale în (m, p) -format) Algoritmul pentru conversia unui număr zecimal X într-un format (m, p) constă în următorii pași.

1. Dacă X = 0, luați o cifră semnată, ordine și mantisă pentru zero și completați algoritmul.

2. Dacă X> 0, luăm apoi semnul 0, altfel acceptăm 1. Se generează un bit semn.

3. Traduceți întreaga valoare fracțională a valorii absolute a numărului X într-un sistem de numere binare. Dacă numărul este fracționar, atunci obțineți m + 1 cifre. Acceptați ordinea de zero.

Tabelul 5.2. Caracteristici comparative
formate de materiale

4. În cazul în care X ³ 1, apoi trece la stânga până când o virgulă pic mai semnificativă și a mări procedura, în caz contrar muta la dreapta până la prima descărcare nenul o virgulă (singur) și de a reduce ordinea.

5. Dacă numărul de cifre ale părții fracționare este mai mic de m, atunci adăugați partea fracționată cu zerouri în partea dreaptă a m biților. Scoateți unitatea de la întreaga componentă. Mantisa se formează.

6. Adăugați la comandă offsetul 2 p - 1 - 1 și traduceți ordinea într - un sistem de numere binare. Ordinea se formează. Codul în care este prezentată ordinea se numește offset. Ordinea deplasată simplifică compararea, adăugarea și scăderea ordinelor în operațiile aritmetice.

7. Înregistrați cifra semnului, ordinea și mantisa în biții corespunzători ai formatului.

Exemplul 5.9. Prezentați numărul -25.6875 într-un singur format fizic.

Soluția. În Exemplul 4.7, valoarea absolută a -25.6875 a fost convertită într-un sistem binar și au fost primite 9 cifre:

Normalizați numărul prin deplasarea virgulei în stânga și mărind ordinea:

1,100110112 × 2 4.

După eliminarea întregii părți, există 23 de biți din partea fracționată (în conformitate cu formatul (23.8)), scrisă ca o mantisă:

Ordinea este 4 (gradul de două după schimbarea virgulei spre stânga). Vom face compensarea și traducerea în sistemul binar:

4 + 127 = 131 = 100000112.

Numărul -25,6875 este negativ, prin urmare, cifra semn este 1.

Totul este gata să reprezinte numărul -25,6875 într-un singur format real în funcție de semnul semnului schemei + comanda + mantisa:

1000001110000000000000.

Împărțim acest număr în 8 biți, formând octeți și le scriem în cifre hexazecimale:

Astfel, numărul -25.6875 poate fi scris ca C1CD8000. # 9633;

La fel ca formatele întregi, formatele numerelor reale sunt stocate în memoria calculatorului în ordinea inversă a ordinii octeților (mai întâi cele mai tinere, apoi cele mai vechi).

Operațiile aritmetice cu numere în virgulă mobilă sunt efectuate în următoarea ordine.

Când se adaugă (scăzând) numerele cu aceleași comenzi, mantisa lor este adăugată (scăzută), iar rezultatul este atribuit ordinului comun numerelor originale. Dacă ordinele numerelor inițiale sunt diferite, atunci mai întâi aceste ordine sunt egale (un număr cu o ordine inferioară este redus la un număr cu o ordine mai mare) și apoi se efectuează o operație de adăugare (scădere) a mantiselor. Dacă se produce o depășire în timpul adăugării mantiselor, suma mantiselor este deplasată spre stânga cu o singură cifră, iar ordinea sumei este mărită cu 1.

Atunci când numerele se înmulțesc, mantisa lor se înmulțește și se adaugă ordinele.

Când divizăm numerele, mantisa dividendului este împărțită de mantisa divizoarei și pentru a obține ordinea numărului din ordinul dividendelor, ordinea divizorului este scăzută. În acest caz, dacă mantisa dividendului este mai mare decât mantisa divizorului, atunci mantisa coeficientului este mai mare decât 1 (se produce un exces) și virgula trebuie mutată spre stânga, crescându-se ordinea coeficientului.







Trimiteți-le prietenilor: