24.4.20

Operator za pomeranje bitova ulevo

Besplatni Java kurs - 24. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Za pomeranje bitova ulevo u Javi se koristi operator za pomeranje bitova ulevo.

<< Operator za pomeranje bitova ulevo

Operator za pomeranje bitova ulevo služi za pomeranje svih bitova nekog broja za određeni broj mesta ulevo. Npr:

int broj = 1 << 3;

Promenljiva broj će posle izvršenja naredbe imati vrednost 8. To je zato što u binarnom obliku, ako zanemarimo prve 24 nule, broj 1 izgleda ovako:

0000_0001

Pošto je broj 1 celobrojni literal tipa int, u stvari ima 32 bita, ali sam zbog čitljivosti ostavio samo krajnjih osam bitova. Jer 0000_0001 je mnogo preglednije nego 00000000000000000000000000000001. A za ovaj primer nam prva 24 bita nije bitno.

Dalje, deklarisao sam promenljivu tipa int kojoj sam dodelio vrednost broja 1 kod kog su bitovi pomereni za 3 mesta ulevo pomoću operatora <<. Posle pomeranja rezultat izgleda ovako:

0000_1000

Ponovo sam zanemario prva 24 bita. Kao što se vidi, jedinica se pomerila za 3 mesta ulevo, a sa desne strane su dopisane nule. Upravo tako radi operator za pomeranje bitova ulevo.

Bitna napomena: tokom pomeranja bitova ulevo gubi se onoliko krajnih levih bitova za koliko se mesta vrši pomeranje. Tačnije, to se dešava kod operanada tipa int i long. Operandi tipa byte i short se automatski konvertuju u tip int, pa se zapravo vrednost bitova sačuvaju sem ako se ne pomere toliko da „iskoče” i iz int tipa. Stvari se dodato komplikuju kod označenih brojeva ako se pomeranjem bitova promeni vrednost najvišeg bita u kome se čuva podatak o znaku (da li je broj pozitivan ili negativan). Zato treba biti oprezan kada se pomeranjem bitova približava granici tipa.


Pročitaj i nastavak:

Besplatni Java kurs - 25. deo - Operatori za pomeranje bitova udesno

No comments:

Post a Comment