Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Metode de codificare si stocare a informatiei folosite in tehnica de calcul

calculatoare



+ Font mai mare | - Font mai mic



Metode de codificare si stocare a informatiei folosite in tehnica de calcul

Dupa cum am aratat anterior, in binar se pot reprezenta direct numere intregi si fractionare fara semn[1]. Pentru a putea lucra cu numere cu semn precum si cu caractere alfanumerice, au fost concepute scheme de codificare a informatiei. Acestea trebuie sa raspunda unor cerinte uneori contradictorii, precum:



  • gama mare de reprezentare a valorilor numerice (numere mari)
  • precizie buna de reprezentare (multe zecimale sau o aproximare cat mai corecta a valorii numerice)
  • unicitatea reprezentarii cifrei 0
  • capacitatea de a codifica atat numare pozitive, cat si pe cele negative, cat mai simplu
  • numar-numar sa dea codificarea lui 0 direct, fara corectii suplimentare
  • operatiile aritmetice de baza sa fie cat mai apropiate de aritmetica binara
  • sa atraga atentia ca am depasit in urma unei operatii aritmetice gama de reprezentare
  • economie maxima de spatiu de memorie
  • circuitele necesare realizarii operatiunilor aritmetice de baza sa fie cat mai simple si cu o structura asemanatoare cu cele pentru operatiile logice

Nu exista o solutie unica care sa satisfaca toate aceste cerinte, si prin urmare se folosesc mai multe tipuri de codificare, adaptate pentru diverse situatii. Vom prezenta in cele ce urmeaza pe cele mai des folosite - dar atentie! mai sunt si altele!

Codificarea intregilor fara semn

Este direct reprezentarea in binar, pe 1 octet (8 biti), 2 octeti (16 biti), 4 octeti (32 biti) sau 8 octeti (64 biti).

In baza zece, numerele pot lua valori[2]:

255

pe 1 octet

pe 2 octeti

pe 4 octeti

pe 8 octeti

Codificarea BCD (Binary Coded Decimal)

Porneste de la ideea de a codifica cifrele prin conversia 09 direct in binar pe opt / patru biti. De exemplu, numarul 34099 se codifica ca:

Exista doua moduri de a codifica BCD:

despachetat - pe un octet doar primii 4 biti contin codificarea unui cifre, urmatorii 4 contin 0000 binar

impachetat (packed BCD) - pe un octet se codifica doua cifre

Se observa ca pe octet o codificare packed BCD poate reprezenta valori de la 0 la 99, in timp ce o codificare binara "standard" poate reprezenta valori de la 0 la 255. Mai mult, o buna parte din combinatiile binare posibile pe octet sunt ilegale d.p.d.v. al codificarii BCD - deci trebuiesc construite circuite speciale logice (cu multe verificari si corectii) pentru o aritmetica corecta in BCD.

Reprezentarea intregilor cu semn

Prima idee este ca bitul cel mai din stanga sa fie 0 pentru numere pozitive, 1 pentru numere negative. Exista citeva metode de codificare:

  • cu bit de semn pus "manual"
  • complement fata de 1
  • complement fata de 2

O a doua idee este sa adunam la valoarea numarului un deplasament care sa asigure ca avem dupa codificare doar numere pozitive - codificarea in exces.

Cu bit de semn in fata (0 pozitiv, 1 negativ)

Numere pozitive

Numere negative

Numarul negativ se obtine punand pe 1 bitul cel mai din stanga. Concluzii:

  • numerele negative au 1 pe bitul cel mai din stanga, cele pozitive au 0
  • avem 2 codificari pentru 0
  • trebuiesc facute corectii la suma numerelor cu semn diferit
  • trebuiesc facute corectii la suma numerelor negative
  • aduna corect numere pozitive
  • daca la insumarea a doua numere pozitive depasesc gama de reprezentare,    obtinem ca rezultat codificarea unui numar negativ, fara avertisment
  • daca la insumarea a doua numere negative depasesc gama de reprezentare,    obtinem ca rezultat codificarea unui numar negativ, cu transport.

Complement fata de 1

Numere pozitive

Numere negative

Numarul negativ se obtine prin negarea bitilor din codificarea numarului pozitiv.

Concluzii:

  • avem 2 codificari pentru 0
  • numerele negative au 1 pe bitul cel mai din stanga, cele pozitive au 0
  • trebuie facute corectii la suma numerelor negative (adunat 1)
  • aduna corect numere pozitive
  • daca depasesc gama de reprezentare la insumarea a doua numere pozitive obtinem ca rezultat codificarea unui numar negativ , fara avertisment

Complement fata de 2

Numere pozitive

Numere negative

Numarul negativ se obtine prin negarea bitilor din codificarea numarului pozitiv, la care se aduna 1

O alta metoda de obtinere a complementului fata de 2 se face prin urmatoarea succesiunea de pasi:

a)       pentru reprezentarea pe n biti se calculeaza 2n

b)       se scade numarul care trebuie reprezentat din valoarea obtinta la pasul a)

c)       se converteste in binar rezultatul de la pasul b)

Concluzii:

  • avem 1 codificare pentru 0
  • numerele negative au 1 pe bitul cel mai din stanga, cele pozitive au 0
  • aduna corect numere pozitive si negative
  • daca depasesc gama de reprezentare la insumarea a doua numere pozitive obtinem ca rezultat codificarea unui numar negativ , fara avertisment
  • daca la insumarea a doua numere negative depasesc gama de reprezentare,    obtinem ca rezultat codificarea unui numar pozitiv, cu transport.
  • valoarea maxima negativa codificat este mai mare cu 1 (in valoare absoluta) decat cea pozitiva

Prin adunarea unui deplasament pozitiv (reprezentare in exces)

Numere negative

Codificare - exces 7

Numere pozitive

Codificare - exces 7

Numarul negativ cel mai mic este codificat 00..00 si este in modul valoarea "exces". Secventa de numere se construieste adunand binar 1 la numarul anterior. Concluzii:

  • avem 1 codificare pentru 0
  • numerele negative au 0 pe bitul cel mai din stanga, cele pozitive au 1
  • nu aduna corect numere pozitive si negative - trebuie scazuta binar codificarea lui 0 pentru a obtinea codul rezultatului corect
  • daca depasesc gama de reprezentare la insumarea a doua numere pozitive obtinem ca rezultat codificarea unui numar negativ, cu transport
  • daca la insumarea a doua numere negative depasesc gama de reprezentare,    obtinem ca rezultat codificarea unui numar negativ, fara avertisment.
  • valoarea maxima negativa codificata este mai mica cu 1 (in valoare absoluta) decat cea pozitiva

Prezentam mai jos rezultatele operatilor de adunare pe numere codificate "exces 7".

Pentru corectie, scadem binar din rezultatul de mai sus 0111 (codificarea valorii 0)

Reprezentarea caracterelor alfanumerice - codul ASCII

ASCII stands for American Standard Code for Information Interchange. Computers can only understand numbers, so an ASCII code is the numerical representation of a character such as 'a' or '@' or an action of some sort. ASCII was developed a long time ago and now the non-printing characters are rarely used for their original purpose. Below is the ASCII character table and this includes descriptions of the first 32 non-printing characters. ASCII was actually designed for use with teletypes and so the descriptions are somewhat obscure. If someone says they want your CV however in ASCII format, all this means is they want 'plain' text with no formatting such as tabs, bold or underscoring - the raw format that any computer can understand. This is usually so they can easily import the file into their own applications without issues. Notepad.exe creates ASCII text, or in MS Word you can save a file as 'text only'

Extended ASCII Codes As people gradually required computers to understand additional characters and non-printing characters the ASCII set became restrictive. As with most technology, it took a while to get a single standard for these extra characters and hence there are few varying 'extended' sets. The most popular is presented below.

Primele 32 de coduri corespund unor caractere netiparibile, denumite caractere de control (pentru imprimanta sau display). Din pacate, acelasi caracter de control trimis catre periferice diferite poate avea efecte diferite (motiv: lipsa de standardizare dintre periferice) - deci consultati documentatia aferenta perifericului! Nici macar comportamentul intre diverse sisteme de operare nu este consistent, astfel o linie de text se termina:

  • cu CR / LF in MS-DOS, CP/M
  • cu CR la Apple Macintosh, Apple II
  • cu LF sub Unix

Al doilea grup de 32 de coduri este folosit pentru a reprezenta semnele de punctuatie, caracterele speciale si cifrele. De exemplu, cifra 5 este codificata ca 35h, adica 0011 0101.

Al treilea grup de 32 de coduri este folosit pentru a reprezenta literele mari si (cum in engleza sunt doar 26 de litere) si unele semne speciale. De exemplu:

  • litera A este codificata ca 41h, adica 0100 0001
  • semnul este codificat ca 5Ch, adica 0101 1100

Al patrulea grup de 32 de coduri sunt foloite pentru a reprezenta literele mici, caractere speciale si inca un caracter de control (delete). Exemple:

  • litera a este codificata 61h, adica 0110 0001
  • semnul este codificat 7Ch, adica 0111 1100
  • delete este codificat 7Fh, adica 0111 1111

Observam cateva caracteristici ale codificarii ASCII:

  • bitul cei mai din stanga (al optulea) este 0 tot timpul
  • urmatorii bitii din stanga (al saptelea si al saselea) dau o indicatie rapida asupra caracterului codificat

al saptelea bit

al saselea bit

caractere de control

cifre si semne de punctuatie

litere mari si caractere speciale

litere mici si caractere speciale

A

a

  • intre codificarea literei mici si a celei mari corespondente singura diferenta este la bitul al 6-lea (el este 1 pentru litere mici, 0 pentru litere mari. Aceasta permite schimbarea foarte usoara din litere mici in mari sau invers, facand XOR intre codul ASCII al literei si 20h (0010 0000).
  • daca din codificarea unei cifre se scade 30h, se obtine pe un octet codificarea binara a valorii respective. Acelasi efect se obtine facand SI (AND) intre codul cifrei si 9h (0000 0111).[3]

Prezentam mai jos codificarea primelor 32 de caractere ASCII.

Hexa

Simbol

Descriere

NUL (null)

SOH (start of heading)

STX (start of text)

ETX (end of text)

EOT (end of transmission)

diferit de ETB

ENQ (enquiry)

ACK (acknowledge)

BEL (bell)

Pe un terminal teletype suna clopotelul. Pe multe terminale sau programe de emulare terminal scoate un "beep".

BS (backspace)

Muta cursorul (sau capul de tiparire) inapoi (spre stanga) un spatiu.

TAB (horizontal tab)

Muta cursorul (sau capul de tiparire) spre dreapta pe urmatoarea pozitie de tabulare. Pozitionarea depinde de perifericul de iesire, dar este adesea la 8 sau 10 spatii.

0A

LF (NL line feed, new line)

Muta cursorul (sau capul de tiparire) pe o linie noua. Pe sisteme Unix muta pe o linie noua SI la inceput de rand in extrema stanga..

0B

VT (vertical tab)

0C

FF (form feed)

Avanseaza hartia la inceputul paginii urmatoare (deca dispozitivul de iesire este o imprimanta)

0D

CR (carriage return)

Muta cursorul complet in partea stanga, dar NU avanseaza la linia urmatoare.

0E

SO(shift out)

Trece dispozitvul de iesire pe setul alternat de caractere.

0F

SI (shift in)

Trece dispozitvul de iesire pe setul de baza de caractere.

DLE (data link escape)

DC1 (device control 1)

DC2 (device control 2)

DC3 (device control 3)

DC4 (device control 4)

NAK (negative acknowledge)

SYN (synchronous idle)

ETB (end of transmission block)

Diferit de EOT

CAN (cancel)

EM (end of medium)

1A

SUB (substitute)

1B

ESC (escape)

1C

FS (file separator)

1D

GS (group separator)

1E

RS (record separator)

1F

US (unit separator)

 

Reprezentarea numerelor reale in virgula mobila

Se porneste de la ideea ca 39.75 poate fi reprezentat ca 0.3975*102, deci un exponent (2), o mantisa (3975) si o baza (10). Mantisa este intotdeauna un numar subunitar (cu prima pozitie diferita de 0), exponentul poate fi negativ sau pozitiv, iar numarul ca atare poate fi pozitiv sau negativ.

Pentru codificarea numerelor in virgula mobila se folosesc 3 formate:

Format

bit semn

biti exponent

biti mantisa

simpla precizie pe 32 biti

dubla precizie pe 64 biti

real temporar pe 80 biti

Indiferent de format, sunt comune urmatoarele caracteristici:

  • bitul de semn este 1 (numar negativ) sau 0 (numar pozitiv).
  • exponentul este codificat in exces (127 pentru simpla precizie, 1023 pentru dubla precizie, respectiv 16383 pentru real temporar[4]).
  • nu se reprezinta punctul zecimal - este inteles implicit si nu mai este reprezentat in codificare
  • mantisa este un numar subunitar care are intotdeauna 1 pe prima pozitie - lucru inteles implicit si care nu mai este reprezentat in codificare.

Sa facem pasii succesivi o codificare in simpla precizie pe 32 biti. Primul pas consta in reprezentarea numarului real in binar: de pilda 41.75=(32+8+1).(1/2 + 1/4) = 101001.11 Procedand ca mai sus, il putem rescrie ca 0.10100111*26, deci exponentul este 2, mantisa este 1010011, iar baza este 2. Pentru a codifica acest numar real in virgula mobila pe 32 biti se aplica succesiv urmatorii pasi:

a)       bitul cel mai din stanga este semnul numarului (0 pentru numere pozitive, 1 pentru numere negative)

b)       pe urmatorii 8 biti se codifica exponentul in exces 127 - deci 6+127 = 133 = 10000101

c)       pe urmatorii 23 de biti se scrie mantisa (mai putin primul bit care este oricum 1), completata la dreapta cu 0

Semn

Exponent

Mantisa

Observatii

in binar

42A70000

in hexa

Alte exemple:

-3.5 este -11.1 sau .111*21

semn:

exponent: 1+127

mantisa: 111

Sir complet in binar

10000000 11000000000000000000000

Sir complet in hexa

C0600000

+3.5 este 11.1 sau .111*21

semn:

exponent: 1+127

mantisa: 111

Sir complet in binar

10000000 11000000000000000000000

Sir complet in hexa



reprezentarea este exacta daca partea fractionara este compusa doar din puteri negative ale lui 2, cu aproximatie daca partea fractionara nu se descompune exact in puteri negative ale lui 2.

atentie: virgula este separator intre mii !

Atentie: acest mecanism functioneaza corect doar pentru un octet! 123 se codifica ASCII ca 31h 32h 33h, deci scaderea 30h pe fiecare octet va duce la secventa de biti 01h 02h 03h - adica 0000 0001 0000 0010 0000 0011, total diferita de corectul 7Bh, adica 111 1011

reprezentarea in exces are avantajul ca permite codificarea numerelor intregi cu semn fara a aloca un bit special pentru acesta



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 4780
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved