Sunteți pe pagina 1din 9

Alexandru Cohal

Noiembrie 2013
1

Cuprins

Reprezentarea intern a numerelor ntregi........................................... 3


Operatori logici la nivel de bit ...................................................................... 4
Operatorul de negaie (NOT) .......................................................................... 4
Operatorul de conjuncie (I, AND) ............................................................ 4
Operatorul de disjuncie (SAU, OR) ............................................................ 5
Operatorul sau exclusiv (XOR) ...................................................................... 5
Operatorul de deplasare la dreapta (SHIFT RIGHT)........................... 5
Operatorul de deplasare la stnga (SHIFT LEFT) ................................. 6

Operaii elementare la nivel de bii ............................................................ 7


Transformarea unui bit n 1 ............................................................................ 7
Transformarea unui bit n 0 ............................................................................ 7
Testarea valorii unui bit.................................................................................... 7
Testarea valorilor ultimilor bii ..................................................................... 8

Reprezentarea mulimilor prin vector caracteristic implementat


pe bii .......................................................................................................................... 8
Probleme ................................................................................................................... 9
Legturi ..................................................................................................................... 9
Bibliografie.............................................................................................................. 9

Reprezentarea intern a numerelor ntregi


Reprezentarea n memorie a numerelor ntregi se face n baza de numeraie 2, printr-o
secven de cifre de 0 i 1. Aceast secven poate avea o lungime de:
8 bii (char, unsigned char)
16 bii (short int, unsigned short int)
32 bii (int, unsigned int, long, unsigned long)
64 bii (long long, unsigned long long).
Poziia aleas pentru reprezentarea semnului unui numr, denumit cifr de semn, este
poziia cea mai din stnga a numrului binar. Se consider n mod convenional cifra binar 0
pentru exprimarea semnului + i cifra binar 1 pentru exprimarea semnului -.
Forma de memorare a ntregilor se face prin Reprezentarea prin Complement fa de 2
astfel:
Reprezentarea numerelor pozitive:
Se reprezint numrul n baza 2
Se completeaz poziiile rmase libere cu 0
(Cifra de semn este 0).
Reprezentarea numerelor negative:
Se reprezint valoarea absolut a numrului (modulul su) n baza 2
Se calculeaz Complementul fa de 1 a reprezentrii obinute (biii
egali cu 1 se transform n 0, iar cei egali cu 0 se transform n 1)
Se adun 1 la valoarea obinut (adunarea se va face n baza 2)
(Cifra de semn va deveni automat egal cu 1 dup aceti pai).
Exemple: Considernd c folosim o variabil de tip char (8 bii), vom obine
urmtoarele reprezentri:
7

+18
-18
-101

0 0
1 1
1 0

0
1
0

1
0
1

0
1
1

0
1
0

1
1
1

0
0
1

Operatori logici la nivel de bit


Operatorii logici pe bii se aplic numai operanzilor ntregi i au ca efect aplicarea
operaiilor logice care vor fi prezentate n cele ce urmeaz, bit cu bit.
Exemplu: Pentru exemplificarea urmtorilor operatori, considerm variabilele a i b
de tip unsigned char cu valorile 234 respectiv 89:
7

a 1 1 1 0 1 0 1 0
b 0 1 0 1 1 0 0 1

Operatorul de negaie (NOT)


Operator: ~
Este singurul operator pe bit unar i are ca rezultat complementarea fa de 1 a
operandului (biii egali cu zero vor deveni unu, iar cei egali cu unu vor deveni zero).
~ 0 1
1 0
Exemplu:
7

~a 0 0 0 1 0 1 0 1
~b 1 0 1 0 0 1 1 0

Operatorul de conjuncie (I, AND)


Operator: &
Este un operator binar care returneaz numrul ntreg a crui reprezentare intern se
obine prin conjuncia biilor situai pe aceei poziie din reprezentarea intern a operanzilor.
Este folosit pentru a pune pe valoarea logic zero (a reseta) anumii bii din variabila
luat n considerare. Astfel, folosirea acestui operator permite scoaterea n eviden a biilor
care ne intereseaz.
& 0 1
0 0 0
1 0 1
Exemplu:
7

a & b 0 1 0 0 1 0 0 0

Operatorul de disjuncie (SAU, OR)


Operator: |
Este un operator binar care returneaz numrul ntreg a crui reprezentare intern se
obine prin disjuncia biilor situai pe aceei poziie din reprezentarea intern a operanzilor.
Este folosit pentru a pune pe valoarea logic unu (a seta) toi biii care au valoarea unu
din cel de-al doilea operand.
| 0 1
0 0 1
1 1 1
Exemplu:
7

a | b 1 1 1 1 1 0 1 1

Operatorul SAU - EXCLUSIV (XOR)


Operator: ^
Realizeaz suma modulo 2 (suma aritmetic n baza 2) a operanzilor.
^ 0 1
0 0 1
1 1 0
Exemplu:
7

a ^ b

0 1 0 0 1 1 0 0

Operatorul de deplasare la dreapta (SHIFT RIGHT)


Operator: >>
Este un operator binar care returneaz numrul ntreg a crui reprezentare este
obinut din deplasarea la dreapta a reprezentrii interne a primului operand cu un numr de
bii egal cu al doilea operand.
Prin deplasarea la dreapta biii de pe poziiile cele mai nesemnificative (poziiile 0,
1,...) se pierd, iar poziiile rmase libere se completeaz cu o extensie a bitului de semn dac
numrul a fost declarat ca fiind un tip de date cu semn (signed) (dac numrul este pozitiv
completarea se face cu 0, iar daca este negativ completarea se face cu 1) sau cu zerouri dac
numrul a fost declarat ca fiind un tip de date fr semn (unsigned).
Deplasarea cu o poziie la dreapta este echivalent cu mprirea primul operand la
doi.
Exemplu:
7

a >> 2

0 0 1 1 1 0 1 0
5

Operatorul de deplasare la stnga (SHIFT LEFT)


Operator: <<
Este un operator binar care returneaz numrul ntreg a crui reprezentare este
obinut din deplasarea la stnga a reprezentrii interne a primului operand cu un numr de
bii egal cu al doilea operand.
Prin deplasarea la stnga biii de pe poziiile cele mai semnificative se pierd, iar
poziiile rmase libere se completeaz cu zerouri.
Deplasarea cu o poziie la stnga este echivalent cu nmulirea primul operand cu doi.
Exemplu:
7

b << 4

1 0 0 1 0 0 0 0

Operaii elementare la nivel de bii


Vom folosi n continuare toate variabilele ca fiind de tip unsigned char (8 bii,
intervalul de valori posibile fiind [0, 255] ).

Transformarea unui bit n 1


Pentru a transforma al k-lea bit al unui numr x n valoarea 1 vom aplica operatorul
de disjuncie (SAU) dintre numrul considerat x i o masc logic m. Aceast masc logic
va avea toi biii egali cu 0, mai puin al k-lea bit care va fi egal cu 1.
Astfel, indiferent de valoarea iniial a bitului k din numrul x, dup aplicarea
operatorului de disjuncie dintre numrul x i masca m, valoarea bitului k din numrul x va fi
egal cu 1.
m = ( 1 << k );
x = ( x | m );

Transformarea unui bit n 0


Pentru a transforma al k-lea bit al unui numr x n valoarea 0 vom aplica operatorul
de conjuncie (I) dintre numrul considerat x i o masc logic m. Aceast masc logic va
avea toi biii egali cu 1, mai puin al k-lea bit care va fi egal cu 0.
Astfel, indiferent de valoarea iniial a bitului k din numrul x, dup aplicarea
operatorului de conjuncie dintre numrul x i masca m, valoarea bitului k din numrul x va fi
egal cu 0.
m = 255 - ( 1 << k );
x = ( x & m );

Testarea valorii unui bit


Pentru a vedea ce valoare are al k-lea bit al unui numr x vom aplica operatorul de
conjuncie (I) dintre numrul considerat x i o masc logic m. Aceast masc logic va
avea toi biii egali cu 0, mai puin al k-lea bit care va fi egal cu 1.
Astfel, dup aplicarea operatorului de conjuncie dintre numrul x i masca m vom
obine fie numrul 0 (caz n care bitul testat are valoarea 0) fie valoarea 2 (caz n care bitul
testat are valoarea 1).
m = ( 1 << k );
val = ( x & m );

Testarea valorilor ultimilor bii


Similar cu testarea valorii unui singur bit se face i testarea valorilor ultimilor b bii.
Masca logic m va avea toi biii egali cu 0 mai puin ultimii b bii care vor fi egali cu 1.
Valoarea acestor ultimi b bii este echivalent cu restul mpririi numrului x la 2 .
m = ( 1 << b ) - 1;
val = ( x & m );

Reprezentarea mulimilor prin vector caracteristic implementat


pe bii
O metod de a reprezenta o submulime S a mulimii {0, 1, 2, n}, unde n
este un numr natural, este vectorul caracteristic.
Vectorul caracteristic poate fi implementat ca un vector v cu n componente, unde
v[x] are valoarea 1 dac elementul x aparine submulimii S, respectiv valoarea 0 n caz
contrar.
O alt metod de implementare a vectorului caracteristic, mai eficient din punct de
vedere al spaiului folosit, este asocierea fiecrui element din mulimea considerat
{0, 1, 2, n} a unui bit. Astfel, bitul corespunztor unui element x are valoarea 1
dac elementul x aparine submulimii S, respectiv valoarea 0 n caz contrar.

Probleme
Ciurul lui Eratostene reprezentat ca vector caracteristic implementat pe bii
Rotirea la dreapta sau la stnga cu un anumit numr de bii a unui numr
memorat ntr-o variabila de tip unsigned int
Morse (Campion)
Cod (Campion)
Viteza (Campion)
Lgdrum (Campion)
Gray (Campion)
Pereti (Campion)
Aritma (Campion)
Radio (Campion)
Patrate7 (Campion)
Gradina (Campion)

Legturi
Operaii pe bii Articol de pe Infoarena
Operaii pe bii Articol realizat de prof. Dan Pracsiu
Operaii pe bii Articol realizat de prof. Dana Lica
Despre baza de numeraie 2

Bibliografie
Prof. Emanuela Cerchez Operaii pe bii
Prof. Dana Lica Operaii pe bii
Cursul de Programare I predat la Facultatea de Automatic i Calculatoare Iai

Alexandru Cohal
alexandru.cohal@yahoo.com
alexandru.c04@gmail.com
Noiembrie 2013
9

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