Sari la conținut

Logică binară

De la Wikipedia, enciclopedia liberă

Logica binară este cea mai simplă și cea mai comună formă de structurare a operațiilor logice. Logica binară pornește de la premiza că o propoziție poate avea numai unul din două rezultate posibile: adevărat sau fals. În sens abstract, se pot folosi și valorile binare 1 și respectiv 0 pentru a reprezenta cele două alternative.

Operații de bază

[modificare | modificare sursă]

Operațiile binare de bază sunt și (AND), sau (OR) și negație (NOT). Dintre acestea, primele două sunt operații binare iar a treia este o operație unară.

Tabla operațiilor logice binare de bază

Operație Simbol logic Simbol
programare
(logică)
Simbol
programare
(binar)
Operand 1 Operand 2 Rezultat
AND
(și)
&& & 0 0 0
0 1 0
1 0 0
1 1 1
OR
(sau)
|| | 0 0 0
0 1 1
1 0 1
1 1 1
NOT
(negație)
¬ ! ~ - 1 0
- 0 1

În tabela de mai sus, "1" este interschimbabil cu "Adevărat" (A), iar "0" cu "Fals" (F).

Merită observată analogia grafică a simbolurilor logice de mai sus cu cele din operațiile cu mulțimi: ∧ arată similar cu ∩ ce reprezintă operația de intersecție a mulțimilor (totalitatea elementelor care se află și într-o mulțime și în cealaltă), iar ∨ seamănă cu ∪, reuniunea mulțimilor (elementele ce se află sau într-o mulțime sau în cealaltă).

Propoziții logice generice

[modificare | modificare sursă]

Propozițiile în logică binară se formează pornind de la elemente de bază care pot avea valori nedeterminate, înlănțuite folosind operatori logici. Astfel, dacă P și Q sunt doi astfel de operatori, "P ∨ Q" înseamnă "P sau Q"; cu alte cuvinte, valoarea de adevăr a acestei propoziții este A (adevărat) dacă măcar unul dintre elementele P sau Q este evaluat ca A sau F (fals) altfel. În acest fel se pot scrie propoziții complexe de logică binară, folosind și parantezele pentru a delimita prioritățile operațiilor. De pildă "(P ∨ Q) ∧ ¬(P ∧ Q)" este evaluat ca fiind A dacă și numai dacă una dintre P și Q este A și cealaltă F. Întâmplător, acesta este operatorul derivat "sau exclusiv" explicat mai jos.

Un exemplu mai concret: să spunem că P înseamnă "ai 14 ani sau mai mult" iar Q înseamnă "nu ai buletin". Neștiind nici dacă aveți 14 ani și nici dacă v-ați făcut deja buletin, propoziția logică "R = P ∧ Q", unde R înseamnă "ar trebui să vă faceți buletinul" este validă în mod predeterminat. Astfel se pot abstractiza o multitudine de concepte logice în propoziții valide cu care se poate opera în continuare în mod abstract, fără a cunoaște a priori valoarea concretă de adevăr a elementelor de bază inițiale.

Propoziții logice în programare

[modificare | modificare sursă]

În programare se folosesc exact aceleași operații de logică binară ca și cele de mai sus, cu o singură diferență: notația. Astfel, exemplul mai complex de mai sus s-ar scrie "(P || Q) && !(P && Q)". Atât rezultatele cât și scopul acestor operații sunt identice cu cele ale logicii generale: pentru a permite programatorilor să creeze un sistem valid de decizii logice pe baza unor date necunoscute la momentul creării algoritmului.

Operații binare în programare

[modificare | modificare sursă]

Similare conceptual cu operațiile logice binare, operațiile pur binare permit combinarea într-un anumit mod a numerelor binare. Astfel, operația binară AND între doi octeți produce ca rezultat tot un octet, în care fiecare bit este stabilit a fi 1 dacă ambii biți corespunzători ai celor doi operanzi sunt 1, și în rest 0. Aceasta se întâmplă și la operația de mascare binară, în care primul operand este o variabilă, iar celălalt este o valoare stabilă folosită ca „mască” sau „sită” pentru a „cerne” biții primului: biții măștii cu valoare nulă vor corespunde în rezultat unor valori nule, în timp ce cei cu valoarea 1 vor corespunde în rezultat cu valoarea bitului respectiv din primul operand.

Operații binare derivate

[modificare | modificare sursă]

În afară de operațiile de bază din tabela de mai sus, de obicei se mai folosesc și alte operații derivate, în special în domeniul informatic. Acestea sunt derivate din operații binare de bază, însă datorită frecvenței utilizării lor au fost preprogramate în procesoare pe baza unor tabele de adevăr ca cea de mai sus, cu scopul de a fi executate într-un singur ciclu de operare. Acestea sunt:

  • NICI (nor): rezultatul este adevărat dacă și numai dacă ambii operatori au valoarea de adevăr F ("P nor Q" este echivalent cu "¬(P ∨ Q)")
  • SAU EXCLUSIV (xor): rezultatul este adevărat dacă și numai dacă unul dintre operanzi este A iar celălalt F ("P xor Q" este echivalent cu "(P ∨ Q) ∧ ¬(P ∧ Q)")

Este interesant de observat că cei trei operatori de bază sunt deja ne-canonici, în sensul că folosind unul dintre ei și negația se poate evalua celălalt:

  • P ∧ Q = ¬(¬P ∨ ¬Q)
  • P ∨ Q = ¬(¬P ∧ ¬Q)