Besplatni Java kurs - 26. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.
Za aritmetičko pomeranje bitova udesno u Javi se koristi operator za aritmetičko pomeranje udesno.
>> Operator za aritmetičko pomeranje udesno
Operator za aritmetičko pomeranje bitova udesno služi za pomeranje svih bitova nekog broja za određeni broj mesta udesno. Npr:
int broj = 8 >> 3;
Promenljiva broj će posle izvršenja naredbe imati vrednost 1. To je zato što u binarnom obliku broj 8 izgleda ovako:
0_000000000000000000000000000_1000
Pomoću donjih crta sam vizuelno odvojio krajnji levi bit jer je prilikom rada sa označenim brojevima u Javi bitan upravo krajnji levi bit jer on predstavlja znak. Zbog toga nije isto ako tokom pomeranja udesno na mesto tog bita ubacimo nulu ili jedinicu. Zato se prilikom aritmetičkog pomeranje bitova udesno, svaki bit pomera za određeni broj mesta udesno, a na mesto krajnjeg levog bita se pri svakom pomeranju ponovo upisuje ista vrednost.
Zbog toga će promenljiva broj posle izvršenja navedene naredbe imati vrednost 1. To je zato što u binarnom obliku broj 1 izgleda ovako:
0_000000000000000000000000000_0001
Vidi se da je jedinica pomerena tačno za tri mesta udesno. Međutim, pošto je početni broj 8 pozitivan i zato mu je krajnji levi bit bio 0, sa leve strane su na taj bit bile tri puta upisane nule što se na ovom primeru baš i ne vidi tako očigledno. Zato ću dati još jedan primer:
int broj = -2147483640 >> 3;
Broj -2147483640 sam namerno odabrao jer u binarnom obliku izgleda ovako:
1_000000000000000000000000000_1000
Posle aritmetičkog pomeranja za tri mesta udesno, to izgleda ovako:
1_111000000000000000000000000_0001
Ponovo se vidi da je jedinica koja je bila na četvrtom mestu sa desne strane pomerena tačno za tri mesta udesno i sad je na prvom mestu sa desne strane. Pošto je početni broj -2147483640 negativan i zato mu je krajnji levi bit bio 1, sa leve strane su u taj bit posle svakog pomeranmja bile upisane jedinice, ukupno tri puta. Krajnja četiri leva bita su posle prvog pomeranja bila 1_100, posle drugog pomeranja 1_110 i konačno posle trećeg pomeranja 1_111.
Pročitaj i nastavak:
Besplatni Java kurs - 27. deo - Operator za logičko pomeranje udesno
No comments:
Post a Comment