1. &Operator pe biți

Am spus anterior că toate datele sunt stocate în memorie într-o reprezentare binară. Deci, cu mult timp în urmă, programatorii au venit cu o mulțime de moduri interesante de a lucra cu numere binare. De exemplu, Java are operatori logici care operează pe biții reprezentării binare a unui număr: &(ȘI), | (OR), ~(NU sau complement) și ^(XOR - exclusiv sau).

a & b
Operator pe biți &(ȘI).

Acest operator este foarte asemănător cu &operatorul logic (ȘI), doar că este notat cu un singur ampersand, nu două:

Și se aplică biților individuali. Fiecare operand este tratat ca o matrice de biți, iar al itreilea bit al rezultatului este calculat folosind al itreilea bit al fiecăruia dintre cei doi operanzi.

Primul bit al rezultatului va fi calculat pe baza primului bit al numărului a și a primului bit al numărului b, al doilea bit - pe baza celui de-al doilea bit al numărului a și al doilea bit al numărului betc.

Operatorul &(ȘI) înseamnă „bitul rezultat este egal cu unu numai dacă bitul corespunzător al numărului aeste egal cu unul, ANDbitul corespunzător al numărului beste egal cu unu”:

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

Exemple:

Exemplu Rezultat
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. |Operator pe biți

Acest operator este foarte asemănător cu |operatorul logic (SAU), doar că este notat printr-o singură linie verticală, nu două:

a | b

Și se aplică biților individuali. Fiecare operand este tratat ca o matrice de biți, iar al-lea bit al rezultatului este calculat folosind al-lea bit al fiecăruia dintre cei doi operanzi.

Operatorul pe biți |(SAU) înseamnă „bitul rezultat este egal cu unu dacă bitul corespunzător al numărului aeste egal cu unul, ORbitul corespunzător al numărului beste egal cu unu”:

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

Exemple:

Exemplu Rezultat
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

Doar atunci când biții corespunzători (biții din aceeași poziție) ai ambelor numere sunt zero, bitul corespunzător rezultatului este egal cu zero.



3. ^Operator pe biți (XOR sau „exclusiv sau”)

Operatorul XOR, pronunțat și exclusiv sau , este notat prin ^simbol. Pentru a o introduce pe tastatură, apăsați shift + 6 (pe un aspect de tastatură engleză).

a ^ b

Acest operator este oarecum similar cu ORoperatorul, inclusiv prin aceea că are un nume similar:XOR

Operatorul pe biți ^(XOR) înseamnă „bitul rezultat este egal cu unu dacă bitul corespunzător al numărului aeste egal cu unul, ORbitul corespunzător al numărului beste egal cu unul, dar nu ambele în același timp”:

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

Exemple:

Exemplu Rezultat
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

Doar atunci când biții corespunzători (biții din aceeași poziție) ai ambelor numere sunt diferiți , bitul corespunzător rezultatului este egal cu unu . Dacă biții sunt aceiași , bitul rezultat este egal cu zero .



4. ~Operator pe biți (NU, COMPLEMENT).

Cred că deja poți ghici ce face. Acest operator este foarte asemănător cu !operatorul logic (NOT), dar este notat cu un tilde , nu cu un semn de exclamare:

~a

Acesta este un operator unar , ceea ce înseamnă că se aplică unui singur număr, nu doi. Apare înaintea acestui singur operand.

Operatorul pe biți ~înseamnă „bitul rezultat este unu dacă bitul corespunzător al numărului aeste zero și este zero dacă bitul corespunzător al numărului aeste unul”:

~1 = 0
~0 = 1

Exemple:

Exemplu Rezultat
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

Acest operator schimbă pur și simplu biții care sunt 1către 0și biții care sunt 0către 1.