Documente Academic
Documente Profesional
Documente Cultură
Cursul V
Tipurifundamentalededate
char short unsigned short float signed char int unsigned double unsigned char long unsigned long long double
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
Tipurifundamentalededate
Deobicei,tipulchar esteechivalentcuunsigned char, sememoreaz peunoctet(decipoateine 256valori distincte).Pentrusigned char,valorilesuntntre128 i127,iarpentruunsigned char ntre0i255.
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)
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
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)
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
sizeof();
Cpuneladispoziieoperatorulsizeof() pentru determinareanumruluideocteinecesarimemorriiunui obiect. Oexpresiedeforma sizeof(obiect) returneaz unntreg.Unobiectpoatefiuntip,cumarfi int saufloat,poatefioexpresie,cumarfi a+b,saupoatefiunirsauostructur.
13
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)
14
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