Laborator № 1

Obiectiv: Pentru a implementa operații aritmetice pe numere care sunt în afara calculatorului personal biți grilă, selectați tipurile de date adecvate pentru stocarea și procesarea acestor numere.

informații teoretice Scurt

Modern calculator personal (PC) este adesea folosit pentru a efectua calcule. Astfel, tipuri standard numerice de date (întregi și reale, inclusiv dubla precizie) este utilizat în mod obișnuit pentru stocarea datelor de intrare și rezultatele calculate. Fiecare tip de date se caracterizează printr-un anumit interval de numere de valori, care la rândul său depinde de mărimea zonei de memorie alocată pentru stocarea unei variabile de acest tip, prezența mărcii în numărul și tipul de reprezentare a numărului (întreg sau real).

Numărul întreg x cu semnul apare la PC, după cum urmează:

dacă X≥0, atunci numărul este înregistrată ca unsigned,

în cazul în care X<0, то число переводится в дополнительный код и записывается как 2 k –| X|, где k – количество разрядов, выделенное под представление числа.

Astfel, dacă un număr întreg pozitiv de stocare alocat 16 biți, valoarea maximă nu poate depăși 2 16 -1 = 65 535 în cazul în care sunt alocate 32 de biți, valoarea maximă va fi de 32 -1 = 2 4 294 967 295. Pentru cei 64 de biți valoarea maximă posibilă a numărului este egal cu 64 -1 = 2 18 446 744 073 709 551 615.

Pentru un procesor pe 64 de biți este fundamental imposibil de a utiliza mai mult de 20 de biți pentru a reprezenta numere zecimale, astfel încât numerele de proces mai mare dimensiune (de exemplu, atunci când astronomice de calcul) de stocare a datelor și prelucrarea acestora trebuie să pună în aplicare programator, dacă este necesar.

Numerele reale sunt de obicei stocate și utilizate în reprezentarea în virgulă mobilă:

unde M - au semnat mantisei și E - bază (10 sau 16), p - un ordin de mărime cu semnul.

Dacă punctul zecimal este situat în mantisa înainte de primul număr semnificativ de cifre pentru un număr fix de biți alocate pentru mantisa, este posibil să se mențină numărul maxim de cifre semnificative, care este de a oferi cea mai precisă reprezentare a PC-ului. Rezultă că mantisei trebuie să fie fracțiunea corectă, prima cifră care este diferită de zero, adică M este în intervalul [0,1, 1). Această reprezentare a numerelor reale se numește normalizat.

Astfel, lungimea mantisei definește precizia numărul și ordinea de lungime limitează intervalul de valori acceptabile. În acest caz, în cazul în care bitul mantisa dincolo de plasă PC-ul, acesta vine rotund. Când ieșirea pentru o anumită gamă de valori ale ordinului poate cauza probleme asociate cu preaplinul de ordine (cu un ordin pozitiv) sau de a obține zero, mașină (ordine negativă).

Maximum sub mantisă reprezentare alocate 52 al descărcării, și sub o reprezentare de ordine - 11 biți. În acest caz, valorile posibile ale numerelor sunt în intervalul de la 3.6 E 1.1 E -4,951-4932.

În acest caz, necesită o precizie de calcul foarte mare (cel puțin 20-30 de puncte zecimale) sau trebuie să fie procesate cu un număr mare de proceduri, de exemplu, mai mare de 5000) (în sistemele de navigație sau în sistemele de ghidare), sarcina de selectare a structurilor necesare pentru stocarea și prelucrarea și punerea în aplicare a operațiunilor necesare pe ele date sunt, de asemenea, responsabilitatea programatorului.

Crearea de multiplicare Program sau diviziune a două numere, dintre care comanda este în intervalul de -99999-99999 (adică nu are mai mult de 5 cifre), iar nu mai mult de 30 de biți mantisa.

Programul ar trebui să efectueze un număr de intrare în gama menționată de valori și pentru a produce ieșire într-o formă normalizată ± 0.m1 E ± K1, în cazul în care numărul de m1 este determinat la 30 de cifre semnificative, numerele K1 - până la 5 cifre. Dacă este imposibil să se facă de calcul ar trebui să genereze un mesaj.

Exemple de realizare sarcini enumerate în anexă.

Instrucțiuni pentru a efectua lucrările

La efectuarea lucrărilor de laborator trebuie remarcat faptul că stocarea numerelor în memoria calculatorului este necesar să se asigure că formatul de prezentare (Figura 1.2.):

Număr Număr semn

Fig.2. Reprezentarea unui număr real

Dacă există un punct zecimal în numărul, opțiunile următoare depunerii. . 00025, -123 .. 123 001. 456. De asemenea, reprezentarea permisă a numărului în formă exponențială: E -20 1234567 sau 1234567 E 20. Programul trebuie să fie realizată posibilitatea de a introduce numere în oricare dintre aceste reprezentări.

Rezultatul la momentul emiterii de imprimare trebuie să fie normalizat ca:
semneze 0.mantissa E semna ordinul.

Acest format nu este o reprezentare standard a mașinii, astfel încât programatorul trebuie să selecteze tipurile de date care pot fi realizate folosind măsuri corespunzătoare (de intrare, de ieșire, procesare) a numerelor de date. Cel mai preferat pentru acest tip este o matrice, de exemplu, matrice de caractere - pentru introducerea numerelor, matrice numerică - pentru prelucrare și ieșire.

Pur și simplu efectua calcule, dacă numărul normalizat înainte de prelucrare, adică dat această formă, atunci când, după zero, ar trebui să fie cifre semnificative. În cazul în care procedura de normalizare intrare poate merge dincolo de intervalul specificat, dar la datele inițiale corecte, aceasta nu ar trebui să conducă la eroare. Pentru a face acest lucru, trebuie să furnizați biți suplimentare în structurile de date care sunt proiectate pentru stocarea și prelucrarea rezultatelor de calcul intermediare.

Dacă lungimea de multiplicare sau divizare numere mantisă a fost mai mult de 30 de caractere, este necesar să se facă rotunjirii (dacă 31-lea bit mai mare sau egală cu 5, apoi se adaugă 30 bit la aparat, dacă mai puțin de 5, apoi 31-lea bit este aruncat). Acest lucru se poate produce prin transfer ciclic bitwise de la LSB pentru corecție mai mari. De exemplu, pentru 5 biți:

99999 E 01 + E = 00008 100007 01 10001 ® E 01 E 02.

La fel cum nu există nici un tip standard pentru a stoca un număr atât de mare, astfel încât nu există nici un standard pentru procesarea aritmetică, astfel încât este necesar să se dezvolte aceste operațiuni, folosind algoritmul de înmulțire și împărțire în „coloana“

Toate fragmentele logic algoritm complet (intrare, ieșire, procesare, etc.) trebuie să ia forma de subrutine.

La proiectarea interfeței ar trebui să fie furnizate:

· Precizarea dimensiunii și intervalul de date de intrare;

· Semnalizarea de funcționare produsă de program;

· Prezența explicațiilor când se emit rezultatul;

· Indicarea formatului de ieșire a datelor.

La testarea programului ar trebui:

o Verificați corectitudinea datelor de intrare și de ieșire (adică meciul lor în formatul cerut);

o să ofere mesaje de ieșire, în absența datelor de intrare ( „intrare goală“);

o verifică corectitudinea operațiunilor;

o rotunjire a pune în aplicare la depășirea mantisa biți;

o urmări apariția preaplin și / sau zero mașină.

De asemenea, este necesar pentru a testa programul de la limitele de valori de date acceptabile, stabilind cel mai mare și cel mai mic număr într-o anumită reprezentare a intervalului.

Raportul privind activitatea de laborator ar trebui să se acorde răspunsurile la următoarele întrebări.

1. Care este posibilă intervalul de numere care urmează să fie prezentat la PC?

2. Care sunt posibile precizia reprezentării numerelor?

3. Ce operațiuni standard sunt posibile pe numerele?

4. Ce tip de date pot alege un programator, în cazul în care numărul de cultivat depășește domeniul posibil al reprezentării numerelor în PC-ul?

5. Cum pot efectua operațiuni pe numere care depășesc reprezentarea mașinii?

Raportul este prezentat în format electronic sau tipărit.

locuri de muncă exemplele de realizare

1. Simulați funcționarea divizarea unui număr real în formă de E ± m.n ± K, în care (m + n) - lungimea totală de 30 de cifre semnificative mantisei; K - de ordinul a până la 5 cifre - un număr întreg de până la 30 de cifre zecimale. Rezultatele sunt în formă de E ± 0.m1 ± K1, unde numărul m1 este determinat la 30 de cifre semnificative și K1 - până la 5 cifre.

2. Simula operația de multiplicare semnat întreg până la 30 de cifre zecimale într-un număr real în formă de E ± m.n ± K, în care (m + n) - lungimea totală a mantisei până la 30 de cifre semnificative și K - de ordinul a până la 5 cifre. Rezultatele sunt în formă de E ± 0.m1 ± K1, unde numărul m1 este determinat la 30 de cifre semnificative și K1 - până la 5 cifre.

3. Pentru a simula funcționarea multiplicarea unui număr real printr-un număr real în formă de E ± m.n ± K, în care (m + n) - lungimea totală a mantisei până la 30 de cifre semnificative și K - de ordinul a până la 5 cifre. Rezultatele sunt în formă de E ± 0.m1 ± K1, unde numărul m1 este determinat la 30 de cifre semnificative și K1 - până la 5 cifre.

4. operarea Simulate de divizare unui număr real la un număr real în formă de E ± m.n ± K, în care (m + n) - lungimea totală a mantisei până la 30 de cifre semnificative și K - de ordinul a până la 5 cifre. Rezultatele sunt în formă de E ± 0.m1 ± K1, unde numărul m1 este determinat la 30 de cifre semnificative și K1 - până la 5 cifre.

Sarcina suplimentară (pentru veniții).

număr mare prezent, mantisa de rupere în părți care corespund reprezentărilor numerice standard, de exemplu:

Comparați eficiența utilizării acestei reprezentări la matrice convenționale la momentul operațiunilor și cantitatea de memorie utilizată. Programul de testare folosind numere care au ambele biți mantisa mari și mici.

articole similare