Reprezentarea numerelor în memoria calculatorului

Numerele din memoria calculatorului

Există două modalități de a reprezenta numere în memoria calculatorului. Acestea sunt așa-numitele: forma de punct fix și forma în virgulă mobilă. sub formă de punct fix utilizat pentru numere întregi, forma virgulă mobilă - la numerele reale (întregi și fracționare). În conformitate cu punctul aici, înseamnă un semn, partea zecimală a numărului.

numere întregi negative.

Să înțeleagă cum să reprezinte numere negative. Aparent, este suficient să se înlocuiască 0 la 1 în vârstă (31 m), memoria celulei de evacuare. Cu toate acestea, în realitate, este mult mai complicat. Pentru a reprezenta numere întregi negative, utilizând codul opțional.

Cod adițional în număr binar celula X N-bit este numărul de completarea acesteia la valoarea 2.

    Obțineți cod suplimentar poate fi în felul următor:
  1. arde reprezentarea internă a unui număr X pozitiv;
  2. scrie codul inversă a numărului de înlocuire în toate cifrele 0 la 1 și 1 la 0;
  3. adăugați la numărul obținut 1.
    Este definit de aceste reguli reprezentarea internă a numărului de celule pe 32 de biți 810 -562.
  1. Rezultatul Hexazecimal:

    MSB, în orice reprezentare a unui număr negativ este egal cu 1. Prin urmare, acesta indică semnul unui număr și, prin urmare, este numit bitul de semn.

    De ce sunt numerele negative sunt reprezentate în complement față de doi? Faptul este că, în acest caz, operarea scăzând două numere este redus la adăugarea cu un cod suplimentar care urmează să fie dedus, iar procesorul doar suficient pentru a putea adăuga numere. De fapt:

    În cazul în care valoarea (-B) va lua forma de cod suplimentar în memoria calculatorului pentru a obține rezultatul corect.

    Verificați dacă în celula de memorie se va transforma ca rezultat al adăugării de 5628 -5628 cu numărul sub formă de cod suplimentar.

    00000000 00000000 00010101 11111100 11101010 11111111 11111111 000000100 + =

    1 00000000 00000000 00000000 00000000

    QED! Unitatea în categoria seniori, obținut prin adăugarea, dincolo de marginea mașinii cuvântul de biți grilă și dispare.

    Binar număr de 32 de biți 231 este „negativ de sine“. Am obține codul adițional:

      Este definit de aceste reguli reprezentarea internă a numărului de celule pe 32 de biți 810 -562.

    În general, pentru un cuvânt N-biți mașină care gama este după cum urmează:

    calculatoare moderne folosesc adesea o reprezentare de 16-biți de numere întregi. În acest caz, gama lor este după cum urmează:

    Ieșirea rezultatelor de calcul în intervalul acceptabil se numește overflow. întrerupere Overflow determină procesorul în timpul calculelor de punct fix. Mașina continuă să creadă, dar rezultatele pot fi incorecte.

    Numere reale. Valorile numerice care poate lua orice valoare (număr întreg și fracționară) sunt numerele reale. În matematică, folosit, de asemenea, termenul de „numere reale“. decizie Majoritatea problemelor matematice se reduce la calcularea unei numere reale-TION. Cum pot aceste numere sunt reprezentate în memoria calculatorului?

    Numerele reale sunt reprezentate în memoria calculatorului sub forma unui float.

    Forma de reprezentare în virgulă mobilă utilizează un număr real R ca produs al mantisele m la radix p o putere întreagă de n, care se numește ordinea:

    De exemplu, numărul 25.324 pot fi scrise în această formă: 0.25324h102. Aici, m = 0.25324 - mantisa, n = 2 - ordine. Ordinea specifică, pentru un număr de poziții și în ce direcție ar trebui să „înoate“, adică pentru a deplasa punctul zecimal în mantisa. De aici numele „virgulă mobilă“.

    Cu toate acestea, următoarele ecuații adevărat și:

    = 2.5324 * 25.324 101 = 0.0025324 * 104 = 2532.4 * 102, etc.

    Se pare că reprezentarea numărului sub formă de virgulă mobilă este ambiguă? Că nu a existat nici o ambiguitate în calculator folosind o reprezentare normalizată a numărului sub forma unui float. Mantisă este normalizat în reprezentarea Dl trebuie să îndeplinească condiția:

    Cu alte cuvinte, mantisa este mai mică decât una, iar prima cifră semnificativă - nu este zero. Deci, pentru reprezentarea numărul normalizat considerat va fi: 0.25324 * 102. Diferitele tipuri de calculatoare folosesc versiuni diferite ale reprezentării numerelor sub forma unui float. ia în considerare unul dintre multele exemple posibile. Să presupunem că în memoria calculatorului un număr real este reprezentat sub forma unui punct sistem flotant binar număr (p = 2) și ocupă celula de 4 octeți. În celulă, următoarele informații cu privire la numărul trebuie să conțină: un semn al numărului, ordine și cifre semnificative ale mantisa. Iată cum se află aceste informații în celulă:

    nbsp nbsp nbsp nbsp MA

    cu Anbsp nbsp nbsp

    octet-lea nbspnbspnbspnbspnbsp1 nbspnbspnbspnbspnbspnbspnbspnbspnbspnbspnbspnbspnbspnbspnbspnbspnbspnbsp doilea baytnbspnbspnbsp al treilea octet baytnbspnbsp patra nbsp

    Cel mai semnificativ bit al primul octet este stocat semnul numărului. În acest bit 0 denotă plus 1 - minus. Cei 7 biți rămași ai primului octet conține ordinea nativă. Următoarele trei octeți sunt stocate cifrele cele mai semnificative ale mantisa.

    Care este procedura pentru aparatul? Cele șapte cifre binare plasat numere binare, de la 0000000 la 1111111. In sistemul zecimal, acest lucru corespunde unui interval de la 0 la 127. total 128 de valori. ordinea semnului nu este stocat în celulă. Dar, evident, ordinea poate fi pozitiv sau negativ. Rezonabil aceste 128 valori împărțite în mod egal între valori pozitive și negative ale ordinului. În acest caz, ordinea dintre motor și adevărat (numită matematică) următoarea corespondență se stabilește:

    Notând mașină Procedura Mp și matematic - p, atunci relația dintre ele astfel formula yrazitsya:

    Astfel, motorul este deplasat în raport cu ordinea matematică a 64 de unități și are doar valori pozitive. Atunci când procesorul plutitor este abaterea ia în considerare punctul.

    Formula rezultată este scris în sistemul zecimal. Deoarece 6410 = 4016 (! Verificați), formula devine sistem hexazecimal:

    Și, în sfârșit, în sistem binar:

      Acum putem scrie reprezentarea internă a numărului 25.324 sub forma unui float.
    1. Traduceți aceasta într-un sistem binar cu 24 cifre semnificative. = 25.32410 11,001.01010010111100011012
    2. Scris sub forma de numere binare normalizate cu virgulă mobilă: .110010101001011110001101 * 10101, unde mantisa radix (210 = 102) și procedura (510 = 1012) sunt scrise în binar.
    3. Calculăm ordinea mașinii. MP2 = 101 + 100 0000 = 100 0101
    4. Scriem reprezentarea numărului în memorie.

    Acesta este rezultatul dorit. Acesta poate fi rescrisă într-un hexazecimal mai compact:

    Pentru a obține o reprezentare internă a unui număr negativ -25.324 suficient obținut în codul de mai sus pentru a înlocui numărul semn cifre 0 la 1.

    Nu inversiune pentru numere negative, punct fix, nu se produce.

    În cele din urmă, considerăm problema gamei de numere care pot fi reprezentate sub forma unui float. În mod evident, numere pozitive și negative sunt dispuse simetric în raport cu zero. În consecință, maxim și numărul minim de egal modul: Rmax = | Rmin |. Cea mai mică valoare absolută a numărului este zero. De ce, atunci este egal cu Rmax? Acest număr cu cel mai mare mantisa și cea mai mare comandă:

    Dacă convertit la sistemul zecimal, veți obține

    Rmax = (1 - 2 -24) * 2 64 = 10 19

    Evident, gama de numere reale este mult mai largă gamă de numere întregi. Dacă rezultatul numărului de calcul obținut modulo mai mare decât Rmax, întreruperea are loc procesorul. Această situație se numește depășire atunci când plutitoare calcule de puncte. Cea mai mică valoare non-zero în valoare absolută este egală cu:

    Orice valori situate sub această valoare absolută, percepută ca un procesor zero.

    După cum se cunoaște din matematică, setul de numere reale la nesfârșit și în mod continuu. Același set de numere reale reprezentabile în memoria calculatorului sub forma de virgula mobila, este limitat și discret. Fiecare valoare succesivă obținută prin adăugarea la mantisei unității precedente, în ultima descărcare (24). Numărul de numere reale pot fi reprezentate exact în memoria pas-RAM a mașinii, calculat prin formula:

    N = 2 t * (U - L + 1) + 1.

    Unde t - numărul de biți ai mantisei; U - valoarea maximă a comenzii matematice; L - comandă minimă de valoare. Pentru exemplul de realizare ne-a discutat (t = 24, U = 63, L = -64) se obține:

    N = 2146683548.

    Toate celelalte numere care nu se potrivesc cu acest set, dar sunt în intervalul acceptabil de valori reprezentate în aproximativ memorie (mantisa este trunchiat la cifra 24). Și, din moment ce au numerele de eroare, atunci rezultatele de calcul cu aceste numere vor conține, de asemenea, o eroare. Din cele de mai sus, se poate concluziona: calcularea numerelor reale din computer sunt efectuate aproximativ.

    Întrebări și Sarcini

    1. Care este forma de punct fix? Pentru a reprezenta orice număr din calculator este folosit?
    2. Atât sub forma unui punct fix reprezintă numere întregi pozitive și negative?

    Site-ul uCoz

    articole similare