Bitski operatori

Bitski operatori su operatori za manipulisanje bitovima. Oni operišu na brojevima, ali taj broj ne tretiraju kao pojedinu vrednost nego ga tretiraju kao string bitova, napisan u 2n-ti formatu (tzv.: two’s-complement binary). Ovaj vid zapisa je isti kao i klasična binarna reprezentacija brojeva za pozitivne vrednosti, ali je malo drugačija za negativne vrednosti (što nećemo obrađivati).


Bitski operatori operišu sa bitovima. U svakom računaru, brojevi su prikazani bitovima tj. serijom nula i jedinica..

& Bitsko AND
| Bitsko OR
^ Bitsko XOR
<< Bitsko pomeranje u levo
>> Bitsko pomeranje u desno
~ Bitsko NOT(jedinični komplement)


Tako da nam sledeće operacije daju na prvi pogled čudne rezultate:

  
print 5 >> 4
print 5 << 1
print 8 & 5
print 9 | 4 
print 12 ^ 42
print ~88
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  0

>>  10

>>  0

>>  13

>>  8

>>  -89



Kada mi brojimo, brojimo sa osnovom 10. To znači da svako mesto u broju može da sadrži jednu od deset cifara od 0 do 9. Kada brojimo binarno, brojimo sa osnovom 2 tj. svako mesto u broju može biti ili 0 ili 1. U binarnom sistemu svako mesto predstavlja stepen od 2. Tako, bit koji se nalazi krajnje desno je 2 na nulti stepen tj. 1’s bit (one’s bit)– bit jedinice – sledeći je 2’s bit (two’s bit), pa 4, 8, 16, 31 i tako dalje. Znači svako mesto u broju, gledano s’desna je: 2 na 0, 2 na 1, 2 na 2, 2 na 3, 2 na 4 itd…

Primer:

Broj “1010” je u binarnom sistemu 10, jer su 2’s i 8’s bitovi “uključeni”, tj:


8`s bit 4`s bit 2`s bit 1`s bit
1 0 1 0
8 + 0 + 2 + 0 =10

S desna na levo:
0 jedinica, 1 dvojka, 0 četvorki, jedna 8
Sledi: 2+8 = 10. „1010“ u binarnom a 10 u dekadnom sistemu.


U Pajtonu, brojevi u binarnom formatu se pišu tako što se na početku doda „0b“ (nula i b).
Prema tome:
0b1 = 1
0b10 = 2
0b11 = 3
0b100 = 4
0b101 = 5
0b110 = 6
0b111 = 7


Sada možemo čak i da sabiramo ovako napisano brojeve:
0b1 + 0b11 = 4 (1 + 3)
0b11 * 0b11 = 9 (3*3)

Vežba:
jedan = 0b1
dva = 0b10
tri = 0b11
cetiri = 0b100
pet = 0b101
sest = 0b110
sedam = 0b111
osam = 0b1000
devet = 0b1001
deset = 0b1010
jedanaest = 0b1011
dvanaest = 0b1100


Pajton ima ugradjenu funkciju koja nam može pomoći u bitskim operacijama. To je bin()funcija. Ova funkcija uzima integer (celobrojnu vrednost) kao input, i vraća binarnu reprezentaciju broja u string obliku.Takođe, možemo koristiti i funkcije oct() i hex() za osnove 8 i 16. Pored toga, funkcija int(), nam služi i da pretvorimo podatak koji nije broj u integer, tj. u celobrojnu vrednost, na primer:


  
print int("42")
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  42


U Pajtonu, stringovi se označavaju sa "", tako da u ovom primeru „42“ nije broj 42, već string 42. Funkcijom int() ga možemo konvertovati u broj. Međutim, ova funkcija može uzeti i drugi, opcioni argumet. Tako ako joj prosledimo neki broj i osnovu u kojoj je taj broj iskazan, funkcija će nam vratiti vrednost tog broja u osnovi 10 (dekadnom sistemu). Na pimer:

  
print int("1010", 2)
print int("0b100",2)
print int("100",2)
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  10

>>  4

>>  4


Pritom je nebitno da li pišemo int("0b100",2) ili int("100",2), rezultat je 4.

Vežba:

  
print int("1",2)
print int("10",2)
print int("111",2)
print int("0b100",2)
print int(bin(5),2)
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  1

>>  2

>>  7

>>  4

>>  5

levo desno

Uputstvo

Neke od programa nećete moći da pokrenete na našoj konzoli, zato Vam predlažemo da sa zvaničnog sajta www.python.org preuzmete portabilnu verziju. Instalacija je vrlo jednostavna. Mi Vam predažemo da odaberete verziju 3.3.5 koju smo i mi koristili. Tekstualni editor u kome možete pisati svoje programe se pokreće preko programa koji se zove IDLE i automatski se instalira sa celim paketom. Novi program započinjete klikom na padajući meni "FILE" >> "NEW FILE". Možete ga pokrenuti pritiskom na dugme F5 na tastaturi.
Konzola koja se nalazi na sajtu omogućava rad sa većinom prezentovanog materijala, ali je naglašeno kada je potrebno preći na instaliranu konzolu.