You are on page 1of 2

Operații și deplasări pe biți

În funcționarea calculatorului algebra booleană reprezintă legătura dintre funcționarea fizică și


cea de care este nevoie în programare.

Algebra booleană este o algebră care în loc să aibă loc peste numere multe (reale, naturale)
are loc peste o mulțime extraordinar de finită: DOAR valorile 0,1 (0=fals, 1=adevărat)
Operațiile definite peste această mulțime sunt:
Disjuncția - SAU - se reprezintă prin "OR" sau +
Disjuncția exclusivă - SAU exclusiv - se reprezintă prin "XOR" sau 
(în limba vorbită se exprimă cu "sau... sau...")
Conjuncția - ȘI - se reprezintă prin "AND" sau x
Negația - NOT - se reprezintă prin "not" sau o bară deasupra (ex: a = NOT a)

Le-am prezentat în ordinea INVERSĂ a priorităților.


Tabelele de adevăr sunt următoarele:
p q p AND q p OR q p XOR q NOT p
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0
La ACSL vom avea de aplica aceste operații între două sau mai multe valori reprezentate pe
câțiva biți.
Pur și simplu, se scriu unele sub altele și facem calculele bit cu bit, de pe pozițiile
corespunzătoare.
Ex:
x = 0110001
y = 1010111

x OR y = 1110111
x XOR y = 1100110
x AND y = 0010001
Deplasările pe biți:
avem deplasări la dreapta, la stânga, simple sau circulare.
La cele simple, "împingem" toți biții cu numărul de poziții cerute, spre stânga sau spre
dreapta, după caz. Valorile care se pierd, sunt bun pierdute, și din capătul din care
împingem ies zerouri.
La cele circulare, valorile care ies pe la un cap intră pe la celălalt.
Se scriu prin:
LSHIFT-poz, RSHIFT-poz (deplasare la stânga/dreapta cu "poz" poziții)
LCIRC-poz, RCIRC-poz (deplasare criculară la stânga/dreapta cu "poz" poziții) - pe română
le mai zicem "permutări circulare"
Exemple:
LSHIFT-2 0110001 = 1000100
RSHIFT-3 0110001 = 0000110
LCIRC-2 0110001 = 1000101
RCIRC-3 0110001 = 0010110

You might also like