Sunteți pe pagina 1din 12

Curs 2

Baze de numeraie, reprezentarea numerelor

Sisteme de numeraie
F.Boian, Bazele matematice ale calculatoarelor, UBB Cluj-Napoca, 2002 Sistem de numeraie - totalitatea regulilor folosite pentru scrierea numerelor cu ajutorul unor simboluri (cifre). 1. Sistemul de numeraie roman - sistem aditiv Cifre: I 1 V 5 X 10 L 50 C 100 D 500 M 1000

Reguli: a) mai multe cifre de aceeai valoare, scrise consecutiv, reprezint suma acestor cifre: XX=20 MMM=3000 b) o pereche de cifre diferite, cu cifra mai mare aflat n faa cifrei mai mici, reprezint suma acestor cifre: XIII=10+3=13 VII=5+2=7 DX=500+10=510 c) o pereche de cifre diferite, cu cifra mai mic n faa cifrei mai mari, reprezint diferena acestor cifre: IV=5-1=4 IX=10-1=9 IL=50-1=49 Dezavantaje: scriere greoaie reprezentri multiple ale numerelor (ex: 8=VIII sau IIX) numere lungi operaii lente 2. Sistemul de numeraie arab - sistem poziional Aportul unei cifre n stabilirea valorii unui numr depinde de valoarea cifrei i de poziia ocupat n irul de cifre folosit. Regul: a) Fiecare grup de 10 elemente (uniti, zeci, sute, etc.) formeaz o grup de rang superior (zece, sut, mie, etc.) Sistemul de numeraie cu baza 10 (zecimal) Cifre: 0 1 2 3 4 5 Sistemul de numeraie octal - baza 8 cifre: 0 1 2 3 4 5 Sistemul de numeraie binar - baza 2 cifre: 0 1 Sistemul de numeraie hexazecimal - baza 16 cifre: 0 1 2 3 4 5 B(=11) C(=12) D(=13) Reprezentarea numerelor naturale ntr-o baz oarecare b Orice numr natural x poate fi scris sub forma: x=c0+c1b+c2b2+...+cn-1bn-1+cnbn unde ci<b, i=o,1...,n se numesc cifrele numrului n baza b. 6 6 7 7 8 9 10

6 7 E(=14)

8 9 F(=15)

(=10)

Exemple:
Numrul ( xyz )b = zb0 + yb1 + xb2 (271)10 = 1+710+2100

Curs 2

Baze de numeraie, reprezentarea numerelor

Conversia dintr-o baz oarecare b n baza 10


(1101)2=120+02+122+123=13 (A3C)16=12160+316+10162=2620

Pentru transformarea unui numr dintr-o baz oarecare b n baza 10 se nmulete ultima cifr a numrului cu baza la puterea 0, penultima cifr se nmulete cu baza la puterea a 1-a, antepenultima cu baza la puterea a 2-a, etc. i se adun rezultatele acestor nmuliri. Pentru a face astfel de transformri trebuie cunoscute cifrele numrului care se transform. Mai jos este dat ca exemplu un program care determin numrul de cifre ale unui numr natural n baza 10 i cifrele acestui numr. Cifrele numrului sunt resturile mpririi ntregi a numrului la baza sistemului de numeraie n care este scris. Dup fiecare mprire, noul numr care se mparte este ctul mpririi precedente. Impririle continu pn cnd ctul devine 0.

Program exemplu: determinarea numrului de cifre ale unui numr natural


//Determina numarul de cifre ale unui numar natural //Numarul trebuie sa fie <=32767 (de tip int) //Cifrele numarului sunt stocate ca elemente ale sirului sirc #include <stdio.h> #include <conio.h> void main() { int c,r,nr,N,j,sirc[100]; printf("\nProgramul determina numarul de cifre ale unui numar natural\n"); printf("\nNumarul trebuie sa fie <=32767 (de tip int)\n\n\a"); do { printf("\nIntroduceti un nr pozitiv: "); scanf("%d",&nr); } while(nr<0); j=0; do { c=nr/10; r=nr-c*10; sirc[j]=r; nr=c; j++; } while(nr>0); N=j-1; printf("\nNumarul are %d cifre. Sirul format din cifrele sale este\n\t",j); for(j=N;j>=0;j--) printf("\n%d",sirc[j]); }

Pentru determinarea cifrelor zecimale unui numr real se procedeaz n felul urmtor: Fie nr numrul real dat. 1. se determin prima cifr zecimal a numrului ca i cif=10*(nr-floor(nr)) //floor returneaza cel mai mare ntreg <= nr 2. nr=nr*10 3. dac nrfloor(nr) continu la 1 4. stop
2

Curs 2

Baze de numeraie, reprezentarea numerelor

Program exemplu: determinarea numrului de cifre zecimale ale unui numr real
//Determina numarul de cifre zecimale ale unui numar real //si construieste un sir cu aceste cifre #include #include #include #include <iostream.h> <stdio.h> <math.h> <conio.h>

void main() { double nr; long int j,N,sir[100],cif; printf("\nProgramul determina numarul de cifre zecimale ale unui numar real\n"); printf("si construieste un sir avand ca elemente cifrele zecimale ale numarului dat\n"); do { printf("\nIntroduceti un numar real:\t"); // fflush(stdin); } while(scanf("%lf",&nr)!=1); j=0; // contor pentru sirul care va contine cifrele zecimale ale numarului real while(nr!=floorl(nr)) //sau while((nr-floorl(nr))>1e-6) { //determina cifra actuala cif=10*(nr-floorl(nr)); sir[j]=cif; nr=nr*10.0; j++; } N=j; printf("\nNumarul are %d cifre zecimale, iar sirul format din cifrele sale este:\n",N); for(j=0;j<N;j++) cout<< sir[j]; getch(); }

Conversia din baza 10 n alte baze

(24)10 = (11000)2

(256)10 = (400)8

(2653)10 = (A5D)16

Pentru transformarea unui numr natural din baza 10 ntr-o baz oarecare b se mparte numrul respectiv la baz, obinndu-se un ct i un rest mai mic dect b. Apoi se mparte ctul obinut la b obinndu-se un nou ct i un nou rest mai mic dect b. mprirea continu pn cnd se obine ctul 0. Cifrele numrului n baza b sunt resturile mpririlor, citite de la ultimul rest ctre primul.
3

Curs 2

Baze de numeraie, reprezentarea numerelor

Program exemplu: tiprirea unui numr natural n baza 10 introdus de la tastatur, n bazele 10, 8 i 16, folosind specificatorii de tip %d, %o i %x
//Tipareste un numar natural introdus de la tastatura //in bazele 10, 8 si 16 #include <iostream.h> #include <stdio.h> void main() { int n; cout << "Introduceti un nr. natural n (in baza 10) : cin >> n; cout << "Baza 10: " << n; printf("\nBaza 8: %o", n); printf("\nBaza 16: %X", n); } ";

Program exemplu: transformarea unui numr din zecimal n binar


//Transforma un numar natural din zecimal in binar #include <stdio.h> #include <conio.h> void main() { int c,r,nr,i,j,bin[100]; printf("\nProgramul face transformarea in binar a unui numar natural\n"); printf("\nNumarul trebuie sa fie <=32767 (de tip int)\n\n\a"); do { printf("\nIntroduceti un nr pozitiv: "); scanf("%d",&nr); } while(nr<0); j=0; do { c=nr/2; r=nr-c*2; bin[j]=r; j++; nr=c; } while(nr>0); printf("\nNumarul transformat in binar este:\t"); for(i=j-1;i>=0;i--) printf("%d",bin[i]); }

Conversia unui numr real ntre dou baze de numeraie 2 pai 1. conversia prii ntregi prin metoda mpririlor succesive - se fac mpriri pn cnd ctul devine zero, iar numrul se obine din irul resturilor scris n ordine invers 2. conversia prii fracionare prin metoda nmulirilor succesive - se fac nmuliri pn cnd:
4

Curs 2

Baze de numeraie, reprezentarea numerelor

a) - partea de dup virgul devine zero b) - se ajunge la un numr prestabilit de cifre c) - se ajunge la o periodicitate - cifrele prii fracionare sunt cifrele care ajung n faa punctului zecimal, adic partea ntreag a produsului obinut Partea fracionar a unui numr scris ntr-o baz b se poate scrie sub forma:

c -1 c -2 c -3 + + +... b b b

unde c-1 este cifra aflat imediat dup virgul, c-2 este a doua cifr a prii zecimale, etc. Fie numrul 0.369140625 n baza 10 care va fi convertit n baza 8. Vom nmuli mereu prile fracionare cu 8

Exemplu:

S-a ndeplinit criteriul a), obinndu-se zero dup virgul Aadar: (0.369140625)10 = (0.275)8 Verificare:

2 7 5 128+56 +5 189 (0.275)8 = + 2 + 3 = = = 0.369140625 8 8 8 512 512

Transformai numrul 0.369140625 n baza 2. Fie numrul 0.416382 pe care l vom converti tot n baza 8, reinnd numai primele 3 cifre: 0 4 1 6 3 8 2 x 8 3 3 3 1 0 5 6 2 6 4 8 4 4 8 5 1 8 7 5 8 4 . . . . . . . Aadar: (0.416382)10 = (0.325...)8 Convertind acum numrul (0.325)8 n baza 10 obinem:

3 2 5 192+16+5 213 (0.325)8 = + 2 + 3 = = = 0.416015625 0.416382 8 8 8 512 512

adic am obinut o eroare de trunchiere. Astfel de erori apar frecvent n cazul conversiilor duble, n cazul reinerii unui numr prestabilit de cifre semnificative. Transformai numrul 0.3741 n baza 2, reinnd primele 6 cifre binare apoi facei transformarea invers. Care este diferena dintre numrul iniial i cel obinut prin transformarea invers? Algoritm pentru conversia prii fracionare dintr-o baz p n alt baz q, prin metoda nmulirilor succesive: Fie f partea fracionar. Dup obinerea cifrei de rang -1 cu relaia c-1=[qf] ( [ ] semnific partea ntreag) n baza b se efectueaz din nou nmulirea nlocuind pe f cu qf, etc. 1. 2. 3. 4. 5. citete f n baza p i=0; dac f=0 sau s-au obinut suficiente cifre continu la pasul 9 ci=int(fq) // partea ntreag a lui fq f=partea fractionar a lui fq = fq-[fq]
5

Curs 2

Baze de numeraie, reprezentarea numerelor

6. i++ 7. continu la pasul 3 8. n=i 9. scrie ci, i=0, 1, ..., n-1 10. stop

Program exemplu: Conversia prii fracionare a unui numr scris n baza 10 ntr-o baz oarecare q
//Programul converteste partea fractionara a unui numar scris in baza 10 //intr-o alta baza q. Numarul se va introduce sub forma 0.xxxxxxx... #include <iostream.h> #include <stdio.h> #include <math.h> void main() { double f; int i,n, c[20],q,nmax=15,cond; cout << "Introduceti partea fractionara a numarului, sub forma: 0.xxxxxxx...: "; cin >> f; cout << "Noua baza: "; cin>> q; i=0; do { c[i]=floor(f*q); f=f*q-floor(f*q); i++; //Stabilirea conditiei de inchiere: fie f=0, fie s-a // ajuns la numarul de cifre impus if(f==0.0) cond=1; else if(i==nmax) cond=1; else cond=0; } while(!cond); n=i; cout<<"Cifrele partii fractionare in baza " << q << " sunt: "; for(i=0;i<n;i++) cout << c[i]; }

Reprezentarea numerelor Reprezentarea numerelor ntregi cu semn n complement fa de 2

Definiii

1. Bit - unitatea de informaie 2. Byte (octet) - unitatea de adresare (8 bii) 3. Locaie de memorie - unitatea de reprezentare a unei date, format din unul sau mai muli octei

n memoria computerelor, numerele sunt reprezentate ca i numere binare, pe un anumit numr (finit) de bii. Valorile care pot fi reprezentate depind de numrul de bii folosii pentru respectiva reprezentare.

Curs 2

Baze de numeraie, reprezentarea numerelor

Spre exemplu, pe 2 bii poate fi reprezentat valoarea maxim 3 = (11)2, iar pe 8 bii poate fi reprezentat valoarea maxim 255=(11111111)2. Dac trebuie reprezentate numere ntregi cu semn, atunci un bit din numrul total de bii ai reprezentrii va fi folosit pentru semnul numrului. Bitul de semn va fi bitul de rang maxim (cel mai din stnga):

In reprezentarea n complement fa de 2, un numr pozitiv se reprezint pe cei n bii, cu bitul de semn 0. Valoarea maxim reprezentabil pe n bii va fi: pe patru bii: pe opt bii: 0 0 1 1 1 1 1 1 1 1 1 1 (111)2 = 7=23-1 (1111111)2 = 127=27-1

Aadar, pe n bii, valoarea maxim reprezentabil este: 2n-1-1 In reprezentarea n complement fa de 2, numerele negative se obin scznd n binar, numrul pozitiv din 2n. Bitul de semn pentru numerele negative va fi 1. Aadar, n acest cod, dac X este pozitiv se reprezint ca atare pe n-1 bii, iar dac este negativ, se reprezint valoarea 2n-|X|.

Exemplu:

Numrul +18, reprezentat pe 8 bii este: 0 0 0 1 0 0 1 0 Numrul -18 se obine scznd din 2n n binar valoarea +18 n binar (vezi figura de mai jos):

Reprezentarea numerelor ntregi n complement fa de 2

sau acelai lucru, se scade n zecimal +18 din 2n (din 28) i se reprezint rezultatul scderii n binar: 28-18=256-18=238 (238)10=(11101110)2 O metod mai rapid de reprezentare a numerelor ntregi negative n complement fa de 2 pe n bii rezult din discuia precedent i este dat de urmtoarea regul: Pentru a reprezenta n complement fa de 2 un numr ntreg negativ se reprezint modulul su dup care, ncepnd de la bitul de ordin zero spre stnga toi biii 0 i primul bit 1 se pstreaz i toi ceilali i inverseaz valoarea (0->1 i 1->0). In cod complementar fa de 2, valoarea minim reprezentabil pe n bii este -2n-1. Fie n = 4 bii Pentru X=6 reprezentarea n binar pe 4 bii va fi: 0110
7

Exemple:

Curs 2

Baze de numeraie, reprezentarea numerelor

Pentru X=-6, reprezentarea n binar va fi cea a numrului pozitiv 24-6=10 i care n binar este 1010. Aceeai reprezentare se obine pornind de la reprezentarea lui +6 i folosind regula de mai sus. Alte coduri de reprezentare a valorilor ntregi sunt: 1. Codul direct Bitul de rang n-1 (cel mai din stnga) este rezervat pentru semn. Un numr negativ se reprezint n cod direct reprezentnd modulul su dup care bitul de semn ia valoarea 1. 2. Codul invers Bitul de rang n-1 (cel mai din stnga) este rezervat pentru semn. Un numr negativ se reprezint n cod invers reprezentnd modulul su dup care se inverseaz valorile tuturor biilor reprezentrii. Calculatoarele actuale folosesc codul complementar pentru reprezentarea ntregilor. In acest cod, valoarea 0 (zero) are reprezentare unic. Reprezentarea numerelor reale Reprezentarea numerelor reale se poate face n virgul fix sau n virgul mobil. Pentru reprezentarea numerelor reale n virgul fix se folosete bitul cel mai semnificativ ca bit de semn. Modulul prii ntregi i partea fracionar au un numr prefixat de bii pe care se reprezint i se aplic urmtoarele reguli: alinierea n locaia de memorie se face la virgula virtual. dac valoarea prii ntregi este mai mic dect valoarea maxim ce poate fi reprezentat pe biii alocai prii ntregi se adaug la stnga zerouri suplimentare. dac valoarea prii ntregi este mai mare dect valoarea maxim ce poate fi reprezentat pe biii alocai prii ntregi se pierd cifrele cele mai semnificative. dac valoarea prii fracionare este mai mic dect valoarea maxim ce poate fi reprezentat pe biii alocai prii fracionare se adaug la dreapta zerouri nesemnificative. dac valoarea prii fracionare este mai mare dect valoarea maxim ce poate fi reprezentat pe biii alocai prii fracionare se pierd cifrele cele mai nesemnificative.

Exemplu

S presupunem c se folosesc 2 octei (16 bii) pentru reprezentarea numerelor reale, din care bitul de rang 15 va fi folosit pentru semn, 6 bii vor fi folosii pentru reprezentarea prii ntregi i 9 bii pentru reprezentarea prii fracionare.

Numrul 19.270751953125 are reprezentarea binar (10011.010001010101). Reprezentarea acestui numr va fi: Numrul negativ -19.270751953125 are reprezentarea binar ca i cea a numrului pozitiv, cu deosebirea c bitul de semn este 1: In schimb, 243. 270751953125 are reprezentarea binar (11110011,010001010101) i partea ntreag a numrului este mai mare dect valoarea maxim reprezentabil pe cei 6 bii alocai prii ntregi. Astfel, acest numr se va reprezenta sub forma:

Curs 2

Baze de numeraie, reprezentarea numerelor

producndu-se o aa-numit depire, adic pierzndu-se 2 bii cei mai semnificativi, iar numrul reprezentat este de fapt 51. 270751953125. Reprezentarea n virgul mobil a numerelor reale este un tip superior de reprezentare, astfel conceput nct la depire se pierd cifrele cele mai puin semnificative. Aceast reprezentare se bazeaz pe faptul c orice numr real x se poate scrie sub forma:

x = 0.m be
unde m este mantisa numrului, b este baza de numeraie, iar e este exponentul. In notaia tiinific, numerele reale se noteaz sub forma: Exemple: Valoare real 125,7323 -10,375 -0,00642 mantisa baza Notaie tiinific 1.257323102 -1.0375101 -6.4210-3
exponent

Scrierea valorilor reale sub forma x = 0.m be este o scriere cu mantis subunitar, n baza 10. Orice valoare real poate fi scris ns i sub forma:

x = 1.m 2e
care nseamn scrierea numrului n baza 2, cu mantis ntre 1 i 2, m fiind partea fracionar a mantisei. Valorile date mai sus ca exemplu se scriu n baza 2 sub urmtoarea form: Zecimal 125,7323 -10,375 -0,00642 Zecimal 125,7323 -10,375 -0,00642 Binar 1111101.101110110111 1010.011 0.00000001101001001 Semn + -

Reprezentarea cu mantis ntre 1 i 2 1.11110110111011011126 -1.01001123 -1.1010010012-8

Astfel, din exemplele de mai sus rezult c pentru reprezentarea valorilor reale n virgul flotant trebuie folosit un anumit num de bii, care s permit reprezentarea: - semnului numrului - mantisei - exponentului - semnului exponentului Pentru aceasta, se folosete standardul IEEE (Institute of Electrical and Electronics Engineers), pentru reprezentarea numerelor n simpl precizie (pe 32 bii) sau n dubl precizie (pe 64 bii). Bitul de semn: - 0 corespunde unui numr pozitiv i 1 corespunde unui numr negativ Exponentul Pe numrul de bii rezervai pentru exponent trebuie reprezentate att numere pozitive ct i negative. n acest scop, exponentului propriu-zis al numrului care se reprezint i se adaug o anumit valoarea care depinde de tipul de precizie folosit (simpl sau dubl), numit caracteristic. n standardul IEEE simpl precizie aceasta are valoarea de 127 (27-1) i n dubl
9

Curs 2

Baze de numeraie, reprezentarea numerelor

precizie are valoarea 1023 (210-1). Astfel, pentru un numr al crui exponent este 0, pe biii alocai exponentului se stocheaz valoarea 127 (n binar 0111111). O valoare de 200 (n binar 11001000) stocat pe biii exponentului nseamn de fapt exponentul 200-127=73. Exponenii cu toi biii 0 sau toi biii 1 sunt rezervai pentru numere speciale. Pentru standardul dubl precizie se aloc 11 bii pentru exponent, iar caracteristica este 1023. Mantisa Mantisa reprezint biii de precizie ai unui numr. Aceasta este compus dintr-un bit implicit principal (ntotdeauna 1 n scrierea cu mantis ntre 1 i 2) i biii fraciei. Pentru a afla bitul implicit principal se ine cont de faptul c n notaia tiinific orice numr poate fi reprezentat n mai multe feluri. Astfel, numrul 5 poate fi reprezentat ntr-unul din modurile urmtoare: 5.00100 0.05102 500010-3 n scopul maximizrii cantitii de numere reprezentabile, numerele floating point sunt stocate n form normalizat, form care se obine punnd punctul zecimal dup prima cifr nenul. n form normalizat, numrul 5 este reprezentat sub forma: 5100. In baza 2, singura cifr nenul nu poate fi alta dect cifra 1, astfel nct nu este necesar ca ea s fie reprezentat explicit i n simpl precizie de exemplu, toi cei 23 de bii sunt folosii pentru reprezentarea prii fracionare a mantisei, oninndu-se practic o precizie de 24 bii folosind doar 23 de bii. In zecimal, precizia corespunztoare obinut este:

24 = 7.2 adic de 7 cifre n simpl precizie i log210


52 =15.65 adic 15 cifre n dubl precizie. log210
Astfel, n simpl precizie, cei 32 bii alocai reprezentrii unui numr n virgul flotant sunt: - 1 bit pentru semnul mantisei (bitul de rang 31) - 8 bii pentru exponent (care va include i semnul exponentului, biii de rang 23-30) - 23 de bii pentru mantis (biii de rang 0-22)

n cazul reprezentrii cu mantis ntre 1 i 2, cifra 1 din stnga virgulei nu are bit rezervat, cifra adugndu-se numai n timpul calculelor. nr.bii[rangul biilor] Semn Exponent Simpl precizie Dubl precizie 1 [31] 8 [30-23] Fracie 23 [22-00] Caracteristic 127 1023
10

1 [63] 11 [62-52] 52 [51-00]

Curs 2

Baze de numeraie, reprezentarea numerelor

Valoarea V reprezentat pe un astfel de cuvt de 32 bii se obine n felul urmtor (E reprezint e+caracteristica):

Dac 0<E<255 atunci V=(-1)S*2E-127*1.F unde "1.F" reprezint numrul binar creat prin adugarea la partea fracionar a prii ntregi 1. Dac E=255 i F este nenul, atunci V=NaN ("Not a number") Dac E=255, F este nul i S =1, atunci V=- Dac E=255, F este nul i S = 0, atunci V=+ Dac E=0, F este zero i S =1, atunci V=-0 Dac E=0, F este zero i S = 0, atunci V=0

In figura de mai jos sunt date cteva valori reprezentate n virgul flotant n standardul IEEE simpl precizie.

Exemplu de valori reprezentate n simpl precizie Valoare n zecimal bitul de semn 1 bit 7/4 -34.432175 -959818 +0 -0 cel mai mic numr 0 1 1 0 1 0 exponentul E=e+c 8 bii 01111111 10000100 10010010 00000000 00000000 00000001 fracia rezultat din mantis normalizat 23 bii 11000000000000000000000 00010011011101010001100 11010100101010010100000 00000000000000000000000 00000000000000000000000 00000000000000000000000
11

Curs 2

Baze de numeraie, reprezentarea numerelor

reprezentabil cel mai mare numr reprezentabil infinit NaN 0 0 0 11111110 11111111 11111111 11111111111111111111111 11111111111111111111111 Nu toi biii 0 sau 1

Simpl precizie Cel mai mic nr. pozitiv Valoarea a mainii Precizia zecimal 2
-126

Dubl precizie
-38

sau 1.175 x 10

-1022

sau 2.225 x 10-308

Cel mai mare nr. pozitiv (2- 2-23) 2127 sau 3.403 x 1038 (2- 2-52) 21023 sau 1.798 x 10308 2-23 sau 1.192 x 10-7 6 cifre semnificative 2-52 sau 2.220 x 10-16 15 cifre semnificative

Valoarea "Not A Number" Valoarea NaN este folosit pentru a reprezenta valori care nu reprezint un numr real. Aceste valori NaN sunt reprezentate printr-o succesiune de bii cu exponentul avnd toi biii 1 i o fracie nenul. Exist dou feluri de valori Nan: QNaN (Quiet NaN) i SNaN (Signalling NaN). QNaN este un NaN cu cei mai semnificativi bii ai fraciei setai i rezult din operaii aritmetice cnd rezultatul matematic nu este definit. SNaN este un NaN cu cei mai semnificativi bii a fraciei teri i astfel de valori sunt folosite pentru a semnala excepii. Semantic, QNaN semnific operaie nedeterminat, iar SnaN semnific operaie invalid.

Care va fi reprezentarea numrului -10.375, n virgul flotant, simpl precizie? 1. Numrul pozitiv se transform n binar i se obine: 1010.011 2. Se scrie numrul obinut n binar sub form normalizat: 1.01001123 3. Se determin valoarea exponentului: 3+127=130 4. Se transform noul exponent n binar: (130)10=10000010 5. Se determin bitul de semn al mantisei: 1 6. Se scrie numrul:

Exemplu:

Rotunjiri Overflow Underflow

12