laborator - cdamian.tuiasi.ro · 106 105 104 103 102 101 100 2314765=2∗10 6 +3∗10 5 +1∗10 4...

30
Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro LABORATOR Reprezentarea Numerelor Sisteme de Calcul

Upload: others

Post on 30-Aug-2019

12 views

Category:

Documents


0 download

TRANSCRIPT

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

LABORATOR

Reprezentarea Numerelor

Sisteme de Calcul

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Cuprins • Sisteme de calcul, componenta hardware și software;

• Funcționarea unității de procesare;

• Reprezentarea informației;

• Reprezentarea numerelor în bazele: 10, 2, 16;

• Conversia numerelor din baza 10 în baza 2;

• Conversia numerelor din baza 10 în baza 16;

• Reprezentarea numerelor negative;

• Operații cu numere în diverse baze de numerație;

• Operații logice aplicate la nivel de bit;

• Evaluarea expresiilor logice.

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Structura unui Sistem de Calcul

Componenta Hardware

Microprocesorul (uP)

Memoria Operativă (Memoria RAM)

Memoria Externă (Dispozitive de stocare a datelor)

Dispozitive periferice (monitor, tastatura, mouse, imprimantă, scanner)

Componenta Software

Sistemul de Operare (Linux, Android, Windows, IoS)

Programe de Aplicații (AutoCAD, OrCAD, Matlab, Office)

Programe Utilitare (Antivirusi, Audio/Video Playere)

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Dispozitive Periferice

Memorie Externa

Magistrala de Comenzi

Sisteme de Calcul - Structura Hardware

Microprocesor (uP)

Magistrala de Date

Memoria Operativa

(MO)

HDD CD-ROM

DVD-ROM Tastatura

Mouse Monitor

Imprimanta Scanner

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Funcționarea Unitătii de Procesare

Magistrala de Comenzi (48biti)

Magistrala de Date (64 biti)

b0

b1

b2

b63

b0

b1

b2

b48

Semnal de tact (frecventa de functionare)

b0

b1

b2

b63

b0

b1

b2

b48

date 0

t0 t1

date 1

comanda 0 comanda 1 Unitate de Procesare (Procesor)

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Sisteme de Calcul - Structura Hardware

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Sisteme de Calcul - Structura Hardware

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Reprezentarea informației

1 0 1 1 0 0 1 1

Ratele de transfer sunt exprimate în biţi pe secundă:

• 56 Kilobiţi/secundă în cazul modemurilor

• 1,544 Megabiţi/secundă în cazul reţelelor de tip T1

Capacitatea de stocare a dispozitivelor de memorie se exprimă în bytes:

• 256 MegaBytes (MB) RAM

• 160 GigaBytes (GB) hard disk

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Reprezentarea informației Atunci când ne referim la Bytes (în cazul memoriei unui computer):

– Kilobyte (KB) 210 = 1,024 bytes

– Megabyte (MB) 220 = 1,048,576 bytes

– Gigabyte (GB) 230 = 1,073,741,824 bytes

– Terabyte (TB) 240 = 1,099,511,627,776 bytes

• Atunci când ne referim la biţi pe secundă (cazul liniilor de transmisie):

– Kilobit pe second (Kbps) = 1000 bps (o mie)

– Megabit pe second (Mbps) = 1,000,000 bps (un milion)

– Gigabit pe second (Gbps) = 1,000,000,000 bps (un bilion)

– Terabit pe second (Tbps) = 1,000,000,000,000 bps (un trilion)

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Reprezentarea Numerelor

• Posibilități de reprezentare a numerelor întregi (baze de numerație):

– Baza 10 (reprezentarea obișnuită)

– Baza 2 (reprezentare binară)

– Baza 16 (reprezentarea hexazecimală)

• Sistemele de calcul operează cu numere reprezentate în forma binară.

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Baza 10 • Baza de numerație 10 folosește zece caractere

pentru reprezentarea numerelor, cele zece caractere utilizate sunt: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

• Fiecărui caracter din componența numărului i se atribuie o putere a lui 10 crescătoare de la dreapta la stânga, începând cu puterea 0.

2 3 1 4 7 6 5

106 105 104 103 102 101 100

2314765 = 2 ∗ 106 + 3 ∗ 105 + 1 ∗ 104 + 4 ∗ 103 + 7 ∗ 102 + 6 ∗ 101 + 5 ∗ 100

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Baza 2 – Forma binară • Baza de numerație 2 folosește două caractere (0 și 1)

pentru reprezentarea numerelor, fiecărui caracter din componența numărului i se atribuie o putere a lui 2 crescătoare de la dreapta la stânga, începând cu puterea 0.

• Conversia unui număr din baza 10 în reprezentare binară se realizează prin împărțiri succesive la 2 și memorarea restului

1 0 1 0 0 1 0 1

27 26 25 24 23 22 21 20

(10100101)2= (1 ∗ 27 + 0 ∗ 26 + 1 ∗ 25 + 0 ∗ 24 + 0 ∗ 23 + 1 ∗ 22 + 0 ∗ 21 + 1 ∗ 20)10

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Baza 2 – Forma binară • Reprezentarea numerelor în baza 2 se poate

realiza utilizând un anumit număr de biți.

• Sistemele actuale de calcul de utilizează: 8, 16, 32, 64, 128 biți pentru reprezentarea valorilor numerice în baza 2.

• Gruparea a 8 biți poartă denumirea de 1 byte.

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Baza 2 – Forma binara • Exemplu de reprezentare a numărului (239)10

în baza 2 folosind un număr diferit de biți.

(239)10 = (11101111)2 reprezentare pe 8 biți

(239)10 = (0000000011101111)2 reprezentare pe 16 biți

(239)10 = (00000000000000000000000011101111)2

reprezentare pe 32 biți

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Baza 16 • Baza de numerație 16 folosește șaisprezece caractere

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) pentru reprezentarea numerelor, fiecărui caracter din componența numărului i se atribuie o putere a lui 16 crescătoare de la dreapta la stânga, începând cu puterea 0.

• Conversia unui număr din baza 10 în reprezentare hexazecimala se realizează prin împărțiri succesive la 16 și memorarea restului

1 A 8 D

163 162 161 160

(1𝐴8𝐷)16= (1 ∗ 163 + 10 ∗ 162 + 8 ∗ 161 + 13 ∗ 160)10

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Reprezentarea Numerelor Baza

10

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Baza 2

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

Baza 16

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

Baza 10 de numeraţie:

Zece caractere: 0,1,2,3,4,5,6,7,8,9

Fiecare număr funcţie de poziţie are o putere a lui 10.

Baza 2:

Două caractere: 0,1

Fiecare număr funcţie de poziţie are o putere a lui 2.

Baza 16 de numeraţie:

16 caractere: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Fiecare număr funcţie de poziţie are o putere a lui 16.

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Conversia numerelor din baza 10 în baza 2

2 239 Rest

2 119 1

2 59 1

2 29 1

2 14 1

2 7 0

2 3 1

2 1 1

2 0 1

(239)10 = (11101111)2

2 140 Rest

2 70 0

2 35 0

2 17 1

2 8 1

2 4 0

2 2 0

2 1 0

2 0 1

(140)10 = (10001100)2

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Conversia numerelor din baza 10 în baza 16

16 239 Rest

16 14 F

16 0 E

(239)10 = (EF)16

16 140 Rest

16 8 C

16 0 8

(140)10 = (8C)16

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Reprezentarea Numerelor Negative • Reprezentarea numerelor negative se face folosind

reprezentarea în complement faţă de 2.

• Modalitatea de calcul a reprezentării:

Se inversează fiecare bit al reprezentării în baza 2 (ex. 01001010 va trece în 10110101)

Numărului rezultat prin inversare i se adaugă 1

Exemplu: 5 = 0101

-5 va fi (inversat(0101)+1) = 1010+1 = 1011

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Reprezentarea Numerelor Negative • Reprezentarea numerelor în mărime şi semn ţine cont de

faptul că bitul b7 (primul din partea stângă, cel mai semnificativ) este considerat ca fiind semnul numărului reprezentat în baza 2.

• Interpretarea bitului b7 este: b7= 0 numărul reprezentat de b6......b0 este pozitiv;

b7= 1 numărul reprezentat de b6......b0 este negativ.

3+ 0011+

5 0101

8 1000

3+ 0011+

7 0111

10 1010

7+ 0111+

-5 1011

2 0010

2* 0010*

3 0011

0010

0010

6 000110

b7 b6 b5 b4 b3 b2 b1 b0

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții

2. Transformaţi următorul număr 1101011110101111 în formă hexazecimală.

1. a. Reprezentați -5 în formă binară pe 8 biţi.

b. Evaluaţi expresia 25+(-5) sub formă binară.

c. Transformaţi rezultatul în baza 10.

D 7 A F

23 22 21 20

8 4 2 1

23 22 21 20

8 4 2 1

23 22 21 20

8 4 2 1

23 22 21 20

8 4 2 1

1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1

13 7 10 15

3. Înmulţiţi 6 cu 8 în baza 2.

4. Înmulţiţi 6 cu -8 în baza 2.

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Operații logice la nivel de bit • Asupra numerelor reprezentate în baza 2

se pot aplica următoarele operații logice la nivel de bit:

– Negația logică (NOT)

• reguli de calcul: 1 negat=0, 0 negat=1.

– SI Logic (AND)

• reguli de calcul: 1 SI 1=1, 1 SI 0=0, 0 SI 0 =0.

– SAU Logic (OR)

• reguli de calcul: 1 SAU 1=1, 1 SAU 0=1, 0 SAU 0 =0.

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Operații logice la nivel de bit

0101 (5)

0011 (3) =

0001 (1)

AND 0011 (3)

0010 (2) =

0010 (2)

AND

OR OR

NOT 0111 (7) =

1000 (8)

0101 (5)

0011 (3) =

0111 (7)

0010 (2)

1000 (8) =

1010 (10)

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Evaluarea expresiilor logice • Operatoriilor logice NOT, AND, OR le sunt

atribuite următorii operatori:

Operația logică NOT are operatorul ( ! )

Operația logică AND are operatorul ( && )

Operația logică OR are operatorul ( || )

• In urma evaluării unei expresii logice se obține un singur răspuns : adevărat sau fals.

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Evaluarea expresiilor logice • Pentru următoarele exemple considerăm:

a=3, b=5, c=9.

• Expresii logice:

(a>b) = fals !(a>b) = adevărat

(c>a) = adevărat !(c>a) = fals

(a>b)&&(c>a) = fals !(a>b)&&(c>a) = adevărat

(a>b)||(c>a) = adevărat !((a>b)||(c>a)) = fals

(!(c>a)&&(a>b))||(c>a) = adevărat

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții • Realizați conversia următoarelor numere din

baza 10 în baza 2 folosind reprezentări pe 8 biți și 16 biți: 16, 32, 48, 63, 64, 128, 250, 255, 1024, 1280, 2048, 2050, 10000, 65535.

• Realizați conversia următoarelor numere din baza 10 în baza 2 folosind reprezentări pe 8 biți și 16 biți: -16, -32, -48, -63, -64, -128, -250, -255, -1024, -1280, -2048, -2050, -10000, -32764.

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții • Realizați următoarele operații folosind

reprezentarea numerelor în baza 2:

• 25+128=

• 68+165=

• -32+128=

• -89-67=

• 129-47=

• 253+(-15)=

• 12-158=

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții • Realizați conversia în baza 2 pe 8 biți și aplicați

operațiile logice NOT, AND, OR la nivel de bit asupra următoarelor numere (sau combinații ale acestora):

27, 35, 87, 96, -111, -145, 198, 243,-243

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții • Realizați conversia următoarelor numere din

baza 10 în baza 16: 16, 32, 48, 63, 64, 128, 250, 255, 1024, 1280, 2048, 2050, 10000, 65535.

• Realizați următoarele operații folosind reprezentarea numerelor în baza 16: • 25+128=

• 68+165=

• 32+128=

• 89-67=

• 129-47=

• 223+15=

• 192-158=

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții • Considerând a=23, b=89, c= 162 realizați

următoarele operații la nivel de bit:

!a=, !b=, !c=, a&b=, a|b=, b&c=, c|b=,

!a&!b=, !(c|a)=, !(a&c)=, (a|b)&(a&b)=.

• Considerând a=23, b=89, c= 162 evaluați următoarele expresii logice:

a<b=, c>a=, (b<c)&&(b<a)=, !(a>b)||!(c>a)=, !(a>b)=,

!(b>c)||(a<b)=, !((a<c)&&!(c>a))=.