în informatică Lectures - prezentarea datelor

date logice (boolean)

Acesta este reprezentat de două valori: adevărat și fals. Utilizate pe scară largă în expresii și expresii logice relație. Există o problemă, acesta este asociat cu o reprezentare mașină a valorilor logice „true“ și „false“. Faptul este că într-un calculator, de obicei nu există concepte standard de valori logice. Piesa minimă PC de informații pentru a procesa comenzi - un octet, în legătură cu care o variabilă boolean atribuie de obicei un octet. Dar, pe de altă parte, pentru a reprezenta valori logice destul de un pic. Se pune întrebarea: cum să umple octetul de 8-biți, în cazul în care doar 1 bit? Acest lucru se poate face în diferite moduri, toată lumea poate alege metoda lor de umplere octeți, astfel încât nu există nici o cale unică, standard, pentru a reprezenta valori logice. Luați în considerare doar câteva:

date caracter

Valoarea unui tip de caracter este un set de caractere pe calculator.

1 simbol = 1 octet (ASCII, DKOI, KOI-8, etc.)
Simbol 1 = 2 octeți (Unicode)

Într-un calculator, fiecare caracter este indicat de obicei de un octet - opt cifre binare. Este numai 256 de valori posibile. Bineînțeles, toate caracterele imaginabile în acest interval nu sunt stabilite. Prin urmare, un tabel de cod care dezvoltatorii alege alfabete pentru a acoperi și pentru a sări peste. Există mai multe opțiuni pentru codificare. Iată câteva exemple de codări de caractere:

DKOI latin 'A' - C1 (16)
Rus 'A' - C1 (16)
spațiu - 20 (16) - ASCII
40 (16) - DKOI
zero, - 30 (16) - ASCII
F0 (16) - DKOI

Adoptat în Statele Unite ale Americii (și cusute în fiecare echipament CG compatibil IBM calculator) codul de masă 437 pentru DOS conține cele mai comune texte matematice în litere și simboluri grecești precum și scrisorile sunt tipice pentru unele alfabete din Europa de Vest. Pentru a introduce caracterele din tabelul de cod de localizare folosit limba română. Ei schimba a doua jumătate a tabelului cod pe caracterele românești. Dar nu există nici un standard uniform. În funcție de metoda de codare litere mici din România pot forma o matrice continuă (codare GOST MIC), cele două matrici (codare alternative), nu o matrice continuă (codare tip ESTEL) matrice aleatoare (KOI-8).

Treptat, câștigă popularitate un tabel nou cod - Unicode. În ea, fiecare caracter este marcat de doi octeți. Cele 65.536 de noi poziții de masă se potrivesc toate alfabetele moderne silabice sisteme de scriere, caractere speciale (cum ar fi Integrale și muzică), chiar și caracterele chinezești.

Din păcate, fișierul font cu toate caracterele Unicode durează câteva megaocteți. De asemenea, în Turbo Pascal nu înseamnă lucrul cu fonturi Unicode, în contrast cu alte limbi (de exemplu, Delphi).

Pentru codificarea caracterelor pe calculatoarele compatibile IBM folosite de multe ori codul ASCII (cod AmericanStandard pentru schimbul de informații - American Standard Code pentru schimbul de informații). Fiecare simbol este atribuit un număr întreg în intervalul 0..255. Acest număr este reprezentarea internă a codului caracterului. Codurile de caractere (0..1F) se referă la codurile oficiale.

Text stocarea

De la invenția sa, principala sarcină a calculatorului a devenit stocarea și prelucrarea informațiilor. Dacă luăm în considerare faptul că cea mai mare parte a informației este o secvență de caractere, necesitatea de a crea un tip șir a apărut destul de repede. Practic problema de stocare de caractere poate fi rezolvată după cum urmează:

  1. Matricele de caractere, și anume datele sunt stocate într-o matrice, dar acest tip de stocare nu este foarte convenabil, deoarece cuvintele sunt formate din numere diferite de caractere și de cele mai multe din memorie nu este pur și simplu utilizat
  2. Linia - modul cel mai convenabil de a stoca, dar poate fi pusă în aplicare în diferite moduri:
    • line cu primul simbol semnificativ - o serie de caractere, primul element al cărui conține lungimea șir. Limbajul Turbo Pascal pentru IBM PC lungimea maximă a unui șir de caractere este de 256 de octeți. Dar este ușor pentru a vedea cea mai mare parte a memoriei este pierdută.
    • string (nul) simbolul terminații null - o secvență de caractere, la capătul căruia există un caracter cu codul # 0. Principalele avantaje ale acestei metode de stocare - lipsa de gunoi, dimensiunea liniei dinamice (acest tip este implementat în C, cea mai recentă versiune de Turbo Pascal 7.0 sub tipul PChar). Din aceasta rezultă că liniile necesită pentru depozitarea acestora de către un octet mai mult decât aveți nevoie. Ie dacă doriți ca linia să n caractere, lungimea reală în memorie va fi (n + 1) simbolul.

date aritmetică

Prelucrarea informațiilor numerice pe un calculator, de regulă, este după cum urmează. Deoarece datele brute și rezultatele sunt scrise în sistemul zecimal familiar pentru oameni și calculatoare care lucrează cu numere binare, la introducerea unui număr sunt transferate în sistemul binar, apoi prelucrarea are loc numere binare, precum și derivarea rezultatele sunt transferate în sistemul zecimal. În acest caz, pentru a transfera numere de la un sistem la altul, desigur, petrece timpul. Dar, în cazul în care datele inițiale și rezultatele câteva, și prelucrarea lor ia o mulțime de timp, atunci costul traducerii nu este foarte vizibil.

Cu toate acestea, există o clasă de probleme (de exemplu, comerciale), care sunt caracterizate printr-o gamă largă de date de intrare numerice, urmată de aplicarea a le una sau două dintre toate operațiile aritmetice și de ieșire ca un număr mare de rezultate. În aceste condiții, numere de traducere din zecimal în binar și înapoi poate lua partea leului din totalul cheltuielilor de timp, care este, desigur, dezavantajoasă. În acest sens, calculatoarele oferă o reprezentare specială a numerelor întregi în care acestea sunt, de fapt nu este diferită de scris numere din sistemul zecimal, și care, prin urmare, necesită puțin sau nici un transfer de numere din reprezentarea externă a interiorului, și vice-versa, și oferă aritmetica de comandă pe astfel de numere. Această notație se numește BCD (binar codificat zecimal, BCD-numere) și sunt construite în felul următor: să ia o notație zecimală și numărul de fiecare din cifra de 4 se înlocuiește cu numărul binar (0,000-1,001), indicând faptul că cifra din sistemul binar.

Diferența dintre binar și codificate în mod binar reprezentări zecimale ale numerelor se manifestă în faptul că în cazul în care reprezentarea binară a baza unui număr de valoare (indiferent de modul în care la început a fost înregistrat), reprezentarea BCD a baza unui număr de înregistrare, și este în formă zecimală (dacă numărul este scris într-un sistem diferit, de exemplu, în înșeptit, atunci am avea o vedere diferită).

Intel * 86: neambalată difera (figura 1 - 1 byte) și ambalate (2 cifre - 1 octet) cifre zecimale.

Pack, de exemplu, numărul 13, care, în format binar este scris ca 00001011, și BCD va arata ca 00010011. Pentru numărul BCD a fost, de asemenea, un semn, se adaugă un alt octet, care este considerat un punct de reper. Exemplele sunt date neambalate număr de nouă cifre, cu un semn:

Complet diferite date zecimale puse în aplicare în aceste procesoare.

date neambalate reprezintă unirea bytes până la 16 bytes. Când se înregistrează un număr zecimal este împărțită în numere zecimale și înregistrarea fiecare dintre ele se înregistrează în octeți separate. Astfel, fiecare octet în notație hexazecimală apare ca F * (16). în cazul în care * - cifre zecimale. În acest caz, ultimul octet este un semn și scrie în hexazecimal ca D * (16), în cazul în care numărul este * negativ și C (16), dacă numărul este pozitiv. De exemplu, putem scrie numărul 156 (10) -156 (10), în această formă.

Date pachet reprezintă, de asemenea, unirea bytes până la 16 bytes. Ei Zecimal Numărul este înregistrat într-o formă ușor diferită. Acum, în fiecare octet este scris nu de o cifră și două. Ultimul octet, la fel ca în modelul anterior, și servește ca semn reprezintă hexazecimal * D (16) și dacă numărul de reper * C (16), în cazul în care unsigned (unde t - ultima cifră a numărului de înregistrare).

Aceste puncte fixe

Aceste punct fix - este o formă de reprezentare a numerelor într-un calculator cu o poziție constantă de virgulă separă partea întreagă de fracționare. În computer un număr de punct fix este unul dintre tipurile de bază. Presupunând că după virgulă sunt toate zerouri, apoi ajunge imediat setul de numere întregi. Ca urmare, numere de puncte fixe pot fi împărțite într-un număr întreg și o parte fracționată. Luați în considerare punerea în aplicare specifică pentru o varietate de calculatoare.

Intel * 86. Pentru calculatoare din această serie au în comun faptul că acestea nu au datele de la un punct fix, cu excepția, desigur, datele reprezentând numere întregi. Procesorul are o comandă pentru a lucra cu numere întregi (semnate și nesemnate) având în memoria următoarele dimensiuni: 1 octet, 2 octeți, 4 octeți și 8 octeți.

IBM - 370. Se poate lucra cu numere și dimensiunea de 2,4 8 octeți întregi. Acest din urmă caz ​​este special, deoarece Procesorul nu are instrucțiuni pentru a le procesa. Pe lângă structura de 4 octeți poate reprezenta numai forme simbolice.

Forma de reprezentare a numerelor:

numere întregi pozitive cu semnul - este 0 și toate numerele pozitive.

numere întregi negative cu semn - toate numerele de mai puțin de 0. O caracteristică a semnului este un tratament special al unuia dintre câmpul de biți reprezentând numărul. Desigur, acest bit este fizic nu este diferit de celelalte - totul depinde de echipa de lucru cu acest domeniu. În cazul în care algoritmul stabilit munca ei cu întreg semnat, acesta va fi un mod special de a interpreta acest bit. Dacă bitul este 0, atunci numărul este considerat a fi pozitiv, iar valoarea sa este calculată în conformitate cu normele obișnuite. Dacă acest bit este 1, numărul este considerat a fi negativ și se presupune că acesta este înregistrat într-un cod suplimentar așa-numitele. Vom înțelege că el reprezintă.

Cod suplimentar un număr negativ reprezintă rezultatul inversoare (înlocuirea 1 la 0 și invers) fiecărui bit al numărului binar, plus unu. De exemplu, ia în considerare un număr zecimal -185 (10). Modulul acestui număr în reprezentarea binară este 10111001 (2). Mai întâi trebuie să completeze această valoare este lăsat cu zerouri la dimensiunile cerute - bytes, cuvinte, etc. În acest caz, trebuie să completeze structura dimensiunea de 2 octeți (în IBM-370 este o jumătate de cuvânt, și Intel - cuvântul), deoarece gama de reprezentări iconice ale numerelor într-un octet este -128..127. Următorul pas - obține completează cele două lui. Pentru a face acest lucru, toți biții de numărul binar este necesar pentru a inversa:

Acum, adăugați unitatea:

Conversia rezultată este 1111111101000111 (2). Se pare că numărul și -185 (10) în calculator. Atunci când se ocupă cu numere, cu un semn de la tine nevoie, cu siguranță posibilitatea de a efectua o acțiune inversă - cu numărul de complement față de doi, determină valoarea modulului său. În acest caz, trebuie să faceți două lucruri:

  1. Efectuați un pic complement inversiune binar.
  2. Pentru numărul binar rezultat pentru a adăuga unul binar.

De exemplu, să definească un modul binar de reprezentare număr -185 (10) = 1111111101000111 (2):

Adăugați unul binar:

Deoarece un bit este semn, care apare în mod natural în intervalele de valori diferență pentru numere fără semn de la și semnat. În plus, numărul este interpretat diferit în funcție de modul în care te uiți la ea.

10000000 (2) - numărul 128, dacă te uiți la ea ca o nesemnate

10000000 (2) - este numărul de -128 dacă privim ca pe un punct de reper (judecând după primul bit este un număr negativ). Numărul -128 este cea mai mare dintre numerele pe un singur octet iconice.

01111111 (2) - numărul 127 - cel mai mare număr pozitiv printre numerele semnate de un octet.

Un alt exemplu, dacă pentru un 90 (10) alocate doi octeți, atunci conținutul octet este numărul binar 01011010 (2). și -90 pentru numărul (10), respectiv 1111111110100110 (2).

Dacă codificarea caracterului sau cifră a numărului nu este plasat în domeniu, există o situație de marcaj preaplin. Din cauza k biți ai celulei pot fi scrise 2 k combinații diferite de 0 și 1, care pot fi scrise în celule diferite:

1 byte iconic -128..127
0..255 nesemnate

2 octeți iconic -32768..32767
0..65535 nesemnate

4 octeți iconic -2147483648..2147483647
0..4294967295 nesemnate

În plus, câțiva octeți pot fi stocate și nu doar numere întregi. Să vedem cum să pună în aplicare număr-punct fix de pe computer cu 3 octeți. Primii doi octeți vor păstra numărul scris în format binar pornind de la MSB, iar al treilea - poziția punctului zecimal. Să presupunem, de exemplu, ar trebui să fie scrise în structura unui număr zecimal 1.1 - numărul punctului. În sistemul binar această fracție poate fi scrisă sub 1,0 (00110). Apoi, scriind această fracțiune în structura noastră, obținem:

Vă atrag atenția asupra faptului că punctul nu poate fi decât în ​​limitele de octeți și nu merge dincolo de ea. Aceasta diferă de date punct fix și virgulă mobilă. Dar, atunci când se ocupă cu date de punct fix trebuie să se alinieze în mod constant poziția unui punct de pe fiecare operandului, astfel încât acțiunea-un punct fix pe termen pentru un timp foarte lung. Din cauza acestui punct fix de date sunt rareori utilizate în practică.

Aceste floating point

Plutitoare numere de puncte - o formă de reprezentare a numerelor într-o reprezentare calculator a unui punct de variabile care separă partea întreagă de fracționare. Acțiuni asupra numerelor în virgulă mobilă este mult mai multă muncă, iar calculatorul plutească mai complex decât calculatoarele cu un punct fix. Gama de numere din calculator un punct plutitor mai mare decât într-un computer-punct fix. Spre deosebire de tipul de serie a cărei valoare este întotdeauna în comparație cu o serie de numere întregi, și, prin urmare, prezentate în exact PC, valorile reale tipuri determinate număr arbitrar doar cu oarecare precizie finită, independent de formatul intern numărul real.

Intel * 86. Aceste procesoare sunt echipe care implementează operații aritmetice pe numere reale. Acest lucru se datorează faptului că punerea în aplicare hardware a acestor operațiuni - ceva scump, iar atunci când creați piatra de temelie a pus întotdeauna ieftinătate; Prin urmare, pentru a reduce costul unui PC, set de instrucțiuni și nu includ comenzi reale aritmetice.

Cum, atunci, pentru a lucra cu numere reale? Există două soluții posibile pentru această problemă.

În primul rând, pe baza comenzilor disponibile, puteți scrie proceduri care implementează operații aritmetice pe numere reale, iar în acele locuri ale programului în cazul în care doriți să o efectuați operații pe numere reale, trebuie să inserați o referință la aceste proceduri.

În al doilea rând, PC-ul poate atașa un dispozitiv special - un co-procesor de aritmetică, care este capabil de a efectua operații aritmetice pe numere reale. Unitatea centrală de procesare comunică cu coprocesorul în următorul scenariu: atunci când trebuie să efectuați o operațiune reală, procesorul trimite un semnal la coprocesorul și trece operanzii corespunzătoare (în PC au o echipă specială în acest scop); coprocessor execută operațiunea, scrie rezultatul într-o anumită locație și returnează controlul procesorului, care continuă apoi activitatea sa.

număr real în calculatoare Intel durează de la 4 la 10 octeți contigue, și are următoarea structură în memoria PC-ului:

Aici s - numerele de biți semn; e - partea exponențială (conține exponent binar); m - numărul mantisei. Dacă vom rescrie numerele stocate în memorie, obținem următoarele numere, și în traducerea acestuia din binar în zecimal vom obține zecimal obișnuit.

Luați în considerare ordinea tuturor tipurilor de numere reale pe acele computere. Tabelul arată dimensiunea domeniile acestor structuri: