Coduri. Reprezentarea numerica a numerelor zecimale
1 Sisteme de numeratie.
Fara alte consideratii suplimentare se prezinta in continuare echivalenta dintre sistemele de numeratie utilizate:
Se mai subliniaza, de asemenea, algoritmul de conversie din sistemul binar in cel hexazecimal (fiind mai folosit) si care se bazeaza pe descompunerea in grupe de patru (tetrade) a caracterelor corespunzand reprezentarii binare si echivalarea fiecarei tetrade conform tabelului 4.1.
zecimal |
hexazecimal |
binar |
Gray |
0 | |||
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 |
A | ||
11 |
B | ||
12 |
C | ||
13 |
D | ||
14 |
E | ||
15 |
F |
Tabelul 4.1. Coduri de reprezentare a numerelor
De exemplu: A18H =1010 0001 10002.
2 Reprezentarea binara in virgula fixa.
Se pot reprezenta atat numere intregi cat si numere fractionare, dar la acestea din urma punctul (virgula) nu se reprezinta fizic (in registru sau locatia de memorie), iar programatorul trebuia sa stie intre care biti ai cuvantului este localizat.
a) reprezentarea numerelor pozitive (cod binar natural BN)
Reprezentarea este sugerata direct de conversia din sistemul zecimal in cel binar. un cuvant de 1 octet poate reprezenta numere intre 0 si 255, deci o marime fizica reprezentata printr-un cuvant pe 8 biti poate fi masurate cu o rezolutia de 1/256. In cazul in care aceasta rezolutie nu este satisfacatoare pentru marimea corespunzatoare cuvantul care o reprezinta in µP poate fi pe 2 sau mai multi octeti.
De exemplu: codul numarului N=254 va fi 1111 1110 (in binar natural BN). Evident, acest cod este un cod unipolar deoarece poate fi utilizat numai la reprezentarea numerelor naturale (semnalelor de o singura polaritate). pentru reprezentarea numerelor intregi ( semnale de ambele polaritati) se utilizeaza coduri bipolare (prezentate la punctele b, c, d).
b) reprezentarea numerelor binare in marime si semn (MS)
In aceasta reprezentare bitul MSB an-1 este egal cu 1 pentru minus si 0 pentru plus, restul bitilor reprezentand numarul in valoare absoluta N (codul BN de la punctul a).
Numerele reprezentabile se situeaza in intervalul: [-2(n-1)-1<=N<=2(n-1)].
Utilizand 1 octet se pot reprezenta numere in domeniul [-127,127], iar utilizand 2 octeti (corespunzand magistralelor de date de 16 biti), se pot reprezenta numere in domeniul [-32757, 32757]. aceasta reprezentare in marime si semn are o utilizare redusa, doar in unele voltmetre digitale.
In unele lucrari pentru acest cod este utilizata denumirea de cod binar deplasat, deoarece fata de codul BN, utilizand de exemplu un octet, poate reprezenta, de asemenea, 256 de numere dar domeniul de reprezentare s-a deplasat (translatat) de la [0,255] in cazul BN la [-127,127] in cazul MS (de fapt codul MS a asigurat reprezentarea a numai 255 de numere, 0 avand o reprezentare dubla).
Acest numar N cu semn de lungime n-1 biti poate fi reprezentat si scalat, adica impartit cu 2n-1,in acest caz considerandu-se ca punctul (virgula) este situat intotdeauna dupa bitul de semn.
c) reprezentarea numerelor binare cu semn in complement fata de 1 (C1)
Particularitatile acestei reprezentari sunt:
-pentru numere pozitive reprezentarea este identica cu MS;
-pentru numere negative N, se defineste negatul acestuia /N sau complementul sau fata de 1, ca fiind numarul obtinut prin negarea sau complementarea fiecarui bit al lui N. Este evidenta relatia: NMS+NC1=11111111111. MSB, adica bitul de semn respecta conventia introdusa in cazul reprezentarii MS, adica are valoarea 1 pentru numere negative si 0 pentru numere pozitive. scalarea se poate face in aceleasi conditii ca si in cazul MS.
d) reprezentarea numerelor binare cu semn in complement fata de 2 (C2)
Aceasta codificare este cea mai utilizata in µP deoarece simplifica foarte mult efectuarea operatiilor aritmetice:
-pentru numere pozitive codificarea este identica cu MS si C1;
-pentru numere negative, un numar N se codifica in C2 identic cu C1 dar in plus se adauge 1 la LSB (bitul cel mai putin semnificativ). Bitul de semn (MSB) mentine aceleasi conventii de la codificarea MS si C.
sunt evidente relatiile:
NMS + NC1 + 1 = 1000.0000 = 2n sau 2n NMS = NC1 + 1.
conform definitiei, NC1 + 1 este chiar complementul fata de 2 a lui N, deci se va putea scrie NC2 = 2n NMS. Foarte des se utilizeaza notatia: NC2 = (-N), prin aceasta intelegandu-se implicit ca numarul negativ respectiv este reprezentat in C2.
Pentru exemplificare se considera situatiile:
12610 = 0111 1110BN = 0111 1110MS = 0111 1110C1 = 0111 1110C2
-12610 = 1111 1110M S = 1000 0001C1 = 1000 0010C2
3 Reprezentarea in virgula flotanta.
Aceasta inlatura dezavantajele reprezentarii in virgula fixa, care apar in cazul numerelor mari (care necesita mai multi octeti) si a celor fractionare (care necesita scalari).
Un numar N se formeaza utilizand 2 componente:
E - denumita exponent, care defineste ordinului de marime al numarului, si
M - mantisa, care precizeaza marimea exacte a numarului.
reprezentarea este date de relatia: N=M·BE, B fiind baza (de obicei 2). Atat mantisa cat si exponentul se pot reprezenta pe unul sau mai multi octeti.
4 Coduri binar-zecimale.
a) Codul 8421 (BCD).
Fiecare cifra zecimala este codificata separat cu 4 cifre binare Grupurile respective se scriu in acea si ordine in care au fost scrise si cifrele zecimale. de exemplu:
25110= 0010 0101 0001BCD
b) Codul Gray.
Este un cod binar care are proprietatea ca reprezentarea oricaror 2 numere consecutive difera printr-o singura cifra. acest cod este foarte util la realizarea codificatoarelor de pozitie (traductoare numerice - §3.5), unde modificarea simultana a mai multor ranguri ar putea conduce la citiri eronate.
5 Reprezentarea datelor alfa numerice.
Cel mai folosit este codul ASCII (american standard code for information interchange). codul de baza este pe 7 biti, deci permite reprezentarea a 128 de caractere standard.
cele mai utilizate caractere sunt prezentate mai jos:
Tabelul 4.2 Caracterele ASCII
Caracter |
Cod ASCII |
Caracter |
Cod ASCII |
Caracter |
Cod ASCII |
Caracter |
Cod ASCII |
|
b(blanc) |
P | |||||||
A |
Q | |||||||
B |
R | |||||||
C |
S | |||||||
D |
T | |||||||
E |
U | |||||||
& |
F |
V | ||||||
G |
W | |||||||
H |
X | |||||||
|
I |
Y | ||||||
2A |
3A |
J |
4A |
Z |
5A |
|||
2B |
3B |
K |
4B |
5B |
||||
2C |
< |
3C |
L |
4C |
5C |
|||
2D |
3D |
M |
4D |
5D |
||||
2E |
> |
3E |
N |
4E |
5E |
|||
2F |
3F |
O |
4F |
5F |
||||
h |
p |
x | ||||||
a |
i |
q |
y | |||||
b |
j |
6A |
r |
z |
7A |
|||
c |
k |
6B |
s |
7D |
||||
f |
n |
6E |
v |
7E |
||||
g |
o |
6F |
w |
triunghi |
7F |
Tab-09-'t' in C;
Enter (carriage return) 0D 'r';
space-20;
formfeed -0c 'f';
linia noua -0a 'n';
tab vertical 08 -'v';
backslash 5c -'';
De asemenea s-au asociat coduri ASCII si pentru caractere mai speciale (cod ASCII extins), utilizand 8 biti, cu consecinta existentei a 256 de coduri ASCII. exista astfel coduri ASCII pentru caractere de forma: a, ö, è, é.
In cele ce urmeaza se prezinta un program C care afiseaza toate caracterele corespunzand codului ASCII extins, deschizand pentru aceasta un fisier carasc.txt (vazut ca un stream generalizat) si accesat printr-un pointer la structura FILE.
#include <stdio.h>
#include <conio.h>
void main()
fprintf (carascii,"ncod smb cod smb cod smb cod smb cod smb cod");
fprintf (carascii," smb cod smb cod smbn");
for(i=0; i<32; i++)
printf(" n" );
fprintf(carascii, "n");
getch();
}
fclose(carascii);
}
Observatie: in cazul standardelor impuse calculatoarelor IBM PC s-a definit si un cod extins al tastaturii, codurile ASCII fiind generate in zona tampon a tastaturii in urma apasarii unei taste sau a unei combinatii de taste. De notat ca in unele cazuri se va genera un cod dublu, primul caracter fiind nul (marcat in cele ca urmeaza prin / ). In astfel de situatii este vorba de taste speciale, pentru care se va face o dubla citire de caracter:
Esc-1B; F1-3B/00; F2-3C/00; F3-3D/00; F4-3E/00; Shift/Esc-B; Shift/F1-54/00; Shift/F2-55/00; Shift/7-37; Shift/8-38; Shift/9-39.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |