Sunteți pe pagina 1din 15

Limbaje deprogramare

Cursul V

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Tipurifundamentalededate
char short unsigned short float signed char int unsigned double unsigned char long unsigned long long double

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Tipurifundamentalededate
Litera a"estememorat peunoctetastfel
0
7

1
6

1
5

0
4

0
3

0
2

0
1

1
0

Fiecarecelul reprezint unbitifiecarebiteste numerotat(ncepndcucelmaipuinsemnificativ).Biii careformeaz unoctetsuntfie"on",fie"off",acestestri fiindreprezentateprin1i0. Astfel, variabilaa"poatefigndit cairuldebii
01100001 = 64+32+1=97 0*27+ 1*26+1*25 +0*24+0*23+0*22 + 0*21+ 1*20

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Tipurifundamentalededate
Deobicei,tipulchar esteechivalentcuunsigned char, sememoreaz peunoctet(decipoateine 256valori distincte).Pentrusigned char,valorilesuntntre128 i127,iarpentruunsigned char ntre0i255.

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

int
Tipuldedate"int"estecelmaifolosittipdinlimbajulC. Acesttip,mpreun cualtetipurintregi (cumarfi:char, short ilong)estedesemnatpentrulucrulcuvalori ntregi. nmatematic,numerelenaturalesunt0,1,2,...,care mpreun cucelenegativeformeaz numerelentregi.Peo main,sepotreprezentanumaiosubmulimefinit a acestornumere. Deobicei,unint sememoreaz peuncuvntdemain. PCurilereprezintcuvntulpe16bii(2octei). MSVisualCareitipdedat__int64 (int pe 8octei) dar acest tipnuexistnaltecompilatoareC.
5 Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Semnulnumerelorntregi
0 1 1 0 0 0 0 1 97= nurmaatribuiriivalorii97launsigned char x i char y rezultlaevaluarea=97 ib=97. 1 1 1 0 0 0 0 1 225= nurmaatribuiriivalorii225ctreunsigned char x ichar y rezult: 11100001 = 128+ 64+32+1=225(=x) 11100001 = ?!?!?!?!?!?!?!?!?!?!?=31(=y)

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Semnulnumerelorntregi
Deunde31? (31scrisnbaza2este:11111) Prinatribuirealui225uneivariabilecarepoatestoca valorintre128i+127arelocodepire (overflow). Exempludedepirenbaza10: Presupunemctimsstocmnumaiocifr,
Fienumrul7 3este complementul lui 7nbaza 10 (celmaimicnumrcareadunatla7 determinodepire trecerealadoucifre) 9+(7)=2 lafelcum 9+ 3 =2 (defapt9+3=12darcumnuputemstocadectocifr1 din12sepierde)
7 Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Semnulnumerelorntregi
nurmaatribuiriivalorii225ctrechar a i unsigned char b rezult:
11100001 = 128+ 64+32+1=225(=x) 11100001 = ?!?!?!?!?!?!?!?!?!?!?=31(=y)

Deunde 31? (31scrisnbaza2este:11111,nuseamncu numruldemaisus). 225+31=256 (dar256este numrul maxim devaloricepotfistocate peunbyte=8bii).Deci,31estecomplementullui225n sistemulnostrudestocare. ncazulunuioverflow primesccomplementul numrului
8 Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Semnulnumerelorntregi
1 1 1 0 0 0 0 1 225= Cumsegsetesimplucomplementulunuinumrscrisn baza2pe8bii:

Seschimbtoibiii1cu0itoibiii0cu1.
0 0 0 1 1 1 1 0

iseadun1
0 0 0 1 1 1 1 1

=31

Atenie! Complementullui31este225numaila reprezentareape8bii(unbyte).Deexemplu,la reprezentareanumerelorntregipe16bii(2bytes) complementullui31este65505.


9 Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Numerereale virgulfix
Exemplu:
Convertim46.25 nbaza2 Convertim parteantreag 46=101110 Convertim parteafracionarnmulindorepetatcu2, extrgnddefiecaredat parteantreagarezultatului 0.25* 2=0.5(extragemdreptbit0) 0.5* 2=1.0 (extragemdreptbit1)

46.25=101110.01 Neoprimcndparteafracionareste0saucndse atingepreciziamaximacalculatorului(cadeexemplu ncazulnumruluizecimal1.1)


10 Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Numerereale virgulmobil
Reprezentareanvirgulfixpoatedescrienumere foartemarisaunumerefoartemicinumaicuorisip uriadememorie. Soluia virgulamobil(floatingpoint) numr =mantisa*10exponent 3.14=0.314*101 1999=0.1999*104 101.0101 =0.101010*23 0.000111=0.111000*23
11 Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Numerereale reprezentare
Dacunfloat este reprezentatpe32bii:
bitul 31 (celmaisemnificativ)estefolositpentrusemn, mantisa ocup 23 bitsdupsemn (biii308) 8 biipentru exponent(biii70) unuldinbiiiexponentuluiartrebuisstochezesemnul acestuia!

Adunareaadounumerefloating point:
Celedounumeretrebuiesaibacelaiexponent Seegalizeazexponeniimodificndusecelmaimicnumr prindeplasareapunctuluizecimalspredreapta Seadunmantisele Senormalizeazrezultatulnforma0.xxx*10xx
12

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

sizeof();
Cpuneladispoziieoperatorulsizeof() pentru determinareanumruluideocteinecesarimemorriiunui obiect. Oexpresiedeforma sizeof(obiect) returneaz unntreg.Unobiectpoatefiuntip,cumarfi int saufloat,poatefioexpresie,cumarfi a+b,saupoatefiunirsauostructur.

13

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

sizeof();
Ceste flexibil nceea ce privete necesarul dememorie pentru tipurile fundamentale situaiile pots difere dela omaina laalta.Totui,ntotdeauna:
sizeof(char) = 1 sizeof(short) <= sizeof(int) <= sizeof(long) sizeof(signed) <= sizeof(unsigned) <= sizeof(int) sizeof(float) <= sizeof(double) <= sizeof(long double)

sizeof() esteoperatornuestefuncie(chiardac are paranteze).

14

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

Funciimatematice
Nuexist funciimatematiceimpliciteciacesteasunt descrisenbiblioteci.Deexemplu,funciile sqrt() pow() exp() log() sin() cos() tan() suntdefinitenbiblioteca<math.h>. Toateacestefuncii, cuexcepialuipow(), auunargumentdouble i returneaz double.Funciapow() aredou argumente detipdouble ireturneaz double.

15

Limbaje deprogramare Conf.dr.L. STOLERIU LSTOLER@UAIC.RO

S-ar putea să vă placă și