Sunteți pe pagina 1din 21

Informatica

Laborator 1

Sisteme de numeratie

Gabriela Niculescu
Sisteme de numeratie

Sistem de numeratie: totalitatea regulilor de


reprezentare a numerelor cu ajutorul unor simboluri
numite cifre.

Cifra: simbol care reprezinta o cantitate intreaga.

Baza (radacina) sistemului de numeratie: numarul de


simboluri permise pentru reprezentarea cifrei.

=> bazele 2, 8, 10 si 16
b=10 b=2 b=8 b=16
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
Sistem Zecimal versus Sistem Binar

Sistemul zecimal foloseste numerele de la 0-9.

Ponderea cifrelor zecimale creste de la dreapta la stanga,


numerotarea lor corespunzand puterilor crescatoare a
bazei de numeratie 10.
– 1425 = 1*103+4*102+2*10+5*100
103 102 101 1

Sistemul binar foloseste doar numerele 0 si 1.

Ponderea cifrelor binare creste de la dreapta la stanga,


numerotarea lor corespunzand puterilor crescatoare a
bazei de numeratie 2.
– 710 = 01112=0*23+1*22+1*21+1*20
23 22 21 1
Sistem Zecimal versus Sistem Binar


Daca grupam 8 coloane reprezentand puterile lui 2 →
→ putem reprezenta orice numar intre 0 si 255 →
8 biti = 1 byte .

27 26 25 24 23 22 21 1

Cum scriem in sistemul binar 67 ?
Schimbarea bazei de numeratie

N numar intreg fara semn in baza x -> noua baza y.


Reprezentarea N in baza y: anan-1 ... a1a0
aflarea coeficientilor in puterile pozitive ale noii baze y

N = anyn + an-1yn-1 + ... + a1y + a0

=> impartiri succesive la noua baza y, retinand la fiecare operatie restul!

N / y = anyn-1 + an-1yn-2 + ... + a1 + a0/y


=> restul a0 (cifra cea mai putin semnificativa a rezultatului), catul N1

N1 / y = anyn-2 + an-1yn-3 + ... + a2 + a1/y


……………….
Nk / y = anyn-k-1 + an-1yn-k-2 + ... + ak+1 + ak/y

Conversia se incheie cand se obtine catul 0.


Exemplu: N = 41(10) -> noua baza 2.

41 : 2 => cat =20 si rest = 1 => a0 = 1


20 : 2 => cat =10 si rest = 0 => a1 = 0
10 : 2 => cat = 5 si rest = 0 => a2 = 0
5 : 2 => cat = 2 si rest = 1 => a3 = 1
2 : 2 => cat = 1 si rest = 0 => a4 = 0
1 : 2 => cat = 0 si rest = 1 => a5 = 1

=> N = 101001(2)

Verificare: N = 1·25 + 0·24 + 1·23 + 0·22 + 0·21 + 1·20 = 41


Aplicatie: algoritm in pseudocod pentru conversia
unui numar intreg din zecimal in binar.
citeste nr
i = 0
cat timp nr ≥ 2i executa
│ a[i] = 0
└ i = i + 1
i = i - 1; n = i; a[n] = 1; nr = nr – 2i
cat timp nr ≠ 0 executa
│ i = i – 1
│ daca nr ≥ 2i atunci
│ │ a[i] = 1
└ └ nr = nr – 2i
scrie (a[i], i = n,0)
Coduri nenumerice
Intr-un sistem de calcul o parte a informatiei prelucrate este nenumerica.
Pentru reprezentarea acesteia se utilizeaza diferite coduri, dintre care cel mai
utilizat este codul ASCII (”American Standard Code for Information
Interchange”). Codul ASCII standard utilizeaza 7 biti pentru reprezentarea
literelor mari si mici ale alfabetului latin, cifrelor zecimale, caracterelor speciale
si a cateva caractere de control (in total 128 de caractere). Caracterele sunt
grupate astfel (codurile fiind furnizate in hexazecimal):
0-1Fh : caractere de control, ca LF (0Ah), CR (0Dh), BEL (07h),...;
20h-2Fh : caractere speciale, ca spatiu, !, ”, #, $,...;
30h-39h : cifrele zecimale 0(30h), 1(31h),...,9(39h);
3Ah-40h : caractere speciale :, ;, <, =, ...;
41h-5Ah : literele mari ale alfabetului A(41h), B(42h), ..., Z(5Ah);
5Bh-60h : caractere speciale [, \, ...;
61h-7Ah : literele mici ale alfabetului a(61h), b(62h), ..., z(7Ah);
7Bh-7Fh : caractere de control si speciale, cum sunt DEL(7Fh),
{(7Bh), }(7Dh),...
Pe langa acest cod se utilizeaza si codul ASCII extins, in care caracterele
sunt reprezentate pe 8 biti (deci se reprezinta in total 256 de caractere).
Codul ASCII

Mapare intre numere si litere - codul ASCII (retineti
doar A=65 a=97).
Sistem Zecimal versus Sistem Hexazecimal


Sistemul hexazecimal folosesc numerele de la 0-9 si
literele de la A-F/ a-f reprezentand numerele 10-15.
6210=3*161+14*160=3E16

15 0
0 0 0 0 | 0 0 0 0 |0 0 1 1 | 1 1 1 0
0 0 3 E

Se face completarea bitilor din stanga cu 0. Un set de 4
biti se numeste nibble.
Sistem Zecimal versus Sistem Hexazecimal


Sistemul hexazecimal folosesc numerele de la 0-9 si
literele de la A-F/ a-f reprezentand numerele 10-15.
6210=3*161+14*160=3E16

15 0
0 0 0 0 | 0 0 0 0 |0 0 1 1 | 1 1 1 0
0 0 3 E

Se face completarea bitilor din stanga cu 0. Un set de 4
biti se numeste nibble.
Sistem Zecimal versus Sistem Hexazecimal


Zecimal → Binar

7210 = 26+23= 10010002


Binar → Hexazecimal
10010002 =4*161+8*160=4816
15 0
0000 0000 0100 1000
0 0 4 8
N numar subunitar, fara semn in baza x -> noua baza y.

Reprezentarea N in baza y: 0. a-1a-2... a-m


N = a-1y-1 + a-2y-2 + ... + a-my-m – aflarea coeficientilor in
puteri negative ale noii baze y

=> inmultiri succesive cu noua baza y, retinand de fiecare


data partea intreaga a rezultatului!
N·y = a-1 + a-2y-1 + a-3y-2 + ... + a-my-m+1

=> a-1 (cea mai semnificativa)

N1·y = a-2 + a-3y-1 + a-4y-2 + ... + a-my-m+2


…………………
Nk·y = a-k-1 + a-k-2y-1 + a-k-3y-2 + ... + a-my-m+k+1
Conversia se incheie:
-partea subunitara a rezultatului inmultirii egala cu
zero ;
-s-a calculat numarul propus de cifre (s-a atins
precizia dorita).

Obs.
conversia numerelor intregi: exacta;
conversia numerelor subunitare: aproximativa.
Exemplu. N = 0.37(10) -> baza 2 (rezultatul pe 7 biti).

0.37 x 2 = 0.74 => a-1 = 0


0.74 x 2 = 1.48 => a-2 = 1
0.48 x 2 = 0.96 => a-3 = 0
0.96 x 2 = 1.92 => a-4 = 1
0.92 x 2 = 1.84 => a-5 = 1
0.84 x 2 = 1.68 => a-6 = 1
0.68 x 2 = 1.36 => a-7 = 1

N ≈ .0101111(2)
Verificare:N ≈ 0·2-1+1·2-2+0·2-3+1·2-4+1·2-5+1·2-6+1·2-7 =
= (0·26+1·25+0·24+1·23+1·22+1·21+1·20)/27 =
= 47 / 128 = 0.367
Exemplu. N = 41.37(10) -> baza 2 (partea subunitara pe 7).

Separat pentru partea intreaga si separat pentru partea


subunitara!

=> N ≈ 101001.0101111(2).

Crestem numarul de biti obtinem o precizie mai buna


pentru partea subunitara!
Cazuri particulare – fara imprartiri/inmultiri
1)x = yn => fiecare cifra in baza x ~ grup de n cifre in
baza y – conversia exacta si ptr partea subunitara

Exemplu. N = 3CF.4AE(16) ->baza 2

16 = 24 => n = 4

3 C F . 4 A E
↓ ↓ ↓ ↓ ↓ ↓
0011 1100 1111 . 0100 1010 1110

=> N = 1111001111.01001010111(2).

Conversia s-a facut exact !


2) xn = y
– in vechea baza x => grupuri de cate n cifre de la punctul
zecimal spre stanga pentru partea intreaga si de la punctul
zecimal spre dreapta pentru partea subunitara (daca este necesar
se vor completa grupurile extreme cu zerouri);
– fiecare grup → cifra in noua baza y.

Exemplu. N = 11001111.1101011(2) → in baza 8.

23 = 8 => n = 3.

011 001 111 . 110 101 100


↓ ↓ ↓ ↓ ↓ ↓
3 1 7 . 6 5 4
=> N = 317.654(8)
Aplicatie: algoritm pentru conversia unui numar
subunitar din zecimal in binar, cu precizia pe m biti.
citeste nr, m
pentru i=1,m executa
└ a[i] = 0
i = 0
cat timp (nr ≠ 0)si(i < m) executa
│ i = i + 1
│ daca nr ≥ 2-i atunci
│ │ a[i] = 1
└ └ nr = nr – 2-i
scrie (a[i], i = 1,m)
Bibliografie

F. Iacob – Introducere in informatica, Editura Printech, 2004.

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