Maskiranje

Maskiranje pomaže u operacijama sa bitovima. „Maska“ se koristi da bismo uključili određeni bit ili ga isključili ili samo da bismo prikupili informacije o nekom broju. Na primer, ako želimo da saznamo da li je treći bit broja „a“ sa desna uključen, to bismo najlakše postigli sa & operatorom sa maskom.
Primer:

  
#Označimo masku i dodelimo varijabli “zeljeni_broj”
a = 0b110
mask = 0b100
zeljeni_broj = a & mask
print zeljeni_broj
            
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  4


Korišćenje & operatora sa maskom 0b100, će isključiti sve bitove broja „a“ OSIM trećeg sa desna (tu gde je 1). Ako je rezultujući broj veći od nule, „bit“ je uključen. Ako nije veči od nule, „bit“ je isključen.

Korišćenje maske za uključivanje bitova:
Masku možemo da koristimo da uključimo bit uz pomoć „|” operatora.
Primer:

  
#želimo da uključimo prvi bit,imamo broj “a”  pa definišemo masku
a = 0b110
mask = 0b1
zeljeni_broj = a | mask
print zeljeni_broj

            
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  7


Objašnjenje: pošto operator OR proverava da li je uključen ili jedan ili drugi, kod prvog broja uključen je prvi, a kod drugog su uključeni drugi i treći, rezultat je da su uključeni i prvi i drugi i treći što je „0b111“, a to je: 1+2+4 = 7.

Koriščenjem XOR operatora možemo lako obrnuti bitove. Recimo da želimo da obrnemo sve bitove u broju „a“:

 

a = 0b110 
mask = 0b111
željeni_broj = a ^ mask
print zeljeni_broj

            
Kopiraj

Nakon pokretanja programa kao rezultat dobićemo:


>>  1


Objašnjenje: XOR rezultuje jedinicom ako bilo koji od brojeva na tom bitnom mestu ima 1, osim ako ga imaju oba, kada će rezultat biti 0. Broj “a” ima 0 na mestu1, 1 na mestu 2 i 1 na mestu 4. Maska ima 1 na mestima 1, 2 i 4. Rezultat će imati 1 samo na prvom bitu jer tu jedan broj ima 1 a drugiima 0, dok na ostalim poljima oba broja imaju 1.

Masku možemo koristiti i da pomeramo bitove na levo i desno. Na primer, želimo da uključimo bit koji je deseti sa desne strane. Da ne bismo kucali ceo broj (0b1000000101, što je 517), uključićemo 10-bit na broju 0b101 na sledeći način:

 
a = 0b101
mask = (0b1 << 9) # pomeramo 1 za 9 mesta, doći će na 10-ti bit s desna
zeljeni_broj = a ^ mask
print zeljeni_broj

            

Nakon pokretanja programa kao rezultat dobićemo:


>>  517


Objašnjenje:^ je ekskluzivni OR. “Bit” će biti 1, ako je bilo koji bit 1, osim ako su oba 1. Kada smo uradili mask = (0b1 << 9), dobili smo da je mask = 0b1000000000 (= 517).
Sada imamo:

  
mask = 0b1000000000
^
a = 0b101
            

tj. rezultat je da će biti uključeni bitovi na prvom, trećem i desetom mestu.

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.