Bitski AND operator - bitsko „I“

Bitski operator AND, poredi dva broja na nivou bitova, i vraća broj u kojem bitovi imaju vrednost „1“ samo ako odgovarajući bitovi u oba broja imaju vrednost „1“.
Na primer:

a:       00101010   #42
b:       00001111   #15

===================

a & b: 00001010   #10
            


Vidimo da samo bitovi na mestima 2 i 8 imaju vrednost 1, tako da će rezultat ove operacije vratiti broj koji ima „1“ na ovim mestima, a ostalo će biti „0“. Po tome, korišćenje & operatora uvek rezultira u broju koji je manji ili jednak manjoj od dve upoređene vrednosti.
Primer za svaku kombinaciju:


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

Primer:


# 7 & 10 = 2

print(0b111 & 0b1010)
            
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:

>>  2


Gornji broj ima „1“ na poljima: 1, 2 i 4. Donji broj ima „1“ na poljima „2“ i „8“. Samo se polje „2“ preklapa, znači rezultat će imati „1“ na polju 2 tj. : 0b10 (=2).

Bitski OR operator (ili I ) – bitsko „ili“


Ovaj operator upoređuje brojeve na nivou bita, i vraća broj u kojem su bitovi tog broja „uključeni“ tj. jednaki „1“, ako je bilo koji odgovarajući bit jednak 1 (ili oba).

a:        00101010  #42
b:        00001111  #15

================

a | b:  00101111  #47
            


Ovaj operator proizvodi samo brojeve koji su jednaki ili veći od većeg od dva data broja.
Primer za svaku kombinaciju:

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

Primer:

#6 | 10 = 14

print(0b110 | 0b1010)
            
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  14

Bitsko ekskluzivno OR (obeležava se i XOR)

Rezultujući broj ima „uključen“ bit ako bilo koji od brojeva ima taj bit „uključen“ osim ako je „uključen“ kod oba broja. Ako je bit „isključen“ na oba broja, i rezultat je isključen.

  
a:         00101010   #42
b:         00001111   #15       

================

a ^ b:   00100101   #37
          

Vidi se na bitu 2’s, oba broja imaju 1, a rezultat ima 0. Isto tako i na mestu 8’s (tj. na četvrtom mestu).
Primer za svaku kombinaciju:

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

Primer:

  
#7 ^ 10 = 13 

print(0b111 ^ 0b1010)
            
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  13


Prvi broj ima “1” na mestima 1, 2 i 4. Drugi ima 1 na mestima 2 i 8. Znači rezultat ima „1“ na prvom bitu (samo prvi broj ima tu 1), na drugom nema (jer oba broja imaju 1 na tom bitu), ima 1 na 4-tom bitu (samo prvi broj tu ima 1) i na 8-om bitu (samo drugi broj tu ima 1).

Bitska negacija ili jedinični komplement(~)

Ova operacija obrće bitove u broju. Ovo je malo komplikovanija operacija, i u principu rezultat ove operacije je ekvivalentan dodavanju 1 nekom broju, i prebacivanju dobijenog broja u minus.
Primer:

  
print(~1)

print(~2)

print(~42)
            
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  -2

>>  -3

>>  -43