29.4.20

Java - operatori za dodelu uz operaciju nad bitovima

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

Operatori za bitove mogu biti spojeni sa operatorom dodele.

Već sam opisao kako rade Java operatori za rad sa bitovima. Kada je potrebno da se istovremeno izvrši operacija nad bitovima i dodeli vrednost, koriste se skraćene verzije:

  • &= dodela uz konjukciju
  • |= dodela uz disjunkciju
  • ^= dodela uz isključivu disjunkciju
  • >>= dodela uz aritmetičko pomeranje udesno
  • >>>= dodela uz logičko pomeranje udesno
  • <<= dodela uz pomeranje ulevo

Pročitaj i nastavak:

Besplatni Java kurs - 29. deo - Relacioni operatori

28.4.20

Operator za logičko pomeranje udesno

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

Postoji i logičko pomeranje bitova udesno za šta se u Javi koristi operator za logičko pomeranje udesno. Logično.

>>> Operator za logičko pomeranje udesno

Pomoću operatora za logičko pomeranje bitova udesno svi bitovi nekog broja se pomeraju za određeni broj mesta udesno dok se sa leve strane dopisuju nule. Npr:

int broj = -2147483640 >>> 3;

Broj -2147483640 u binarnom obliku izgleda ovako:

1_000000000000000000000000000_1000

Promenljiva broj će posle izvršenja naredbe imati sledeću binarnu vrednost:

0_001000000000000000000000000_0001

Pomoću donjih crta sam vizuelno odvojio krajnji levi bit koji predstavlja znak. Prilikom logičkog pomeranje bitova udesno, svaki bit se pomera za određeni broj mesta udesno, a na mesto krajnjeg levog bita se pri svakom pomeranju upisuje nula.


Pročitaj i nastavak:

Besplatni Java kurs - 28. deo - Operatori za dodelu uz operaciju nad bitovima

27.4.20

Operator za aritmetičko pomeranje udesno

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

Uskoro: veb-sajt posvećen učenju Jave

Pročitaj i ostale Java vesti.

Kao što sam nagovestio ranije, pripremam veb-sajt čija tema će biti proučavanje programskog jezika Java.

Šta će biti različito u odnosu na blog?

Veb-sajt i blog razlikovaće se u nekoliko bitnih stvari.

Način proučavanja programskog jezika Java

Blog predstavlja Javu na takav način da može biti koristan i početnicima, ali i onima koji već imaju iskustva sa Javom. Veb-sajt će imati odvojene tutorijale prilagođene iskustvu ljudi kojima je namenjen. Blog sam isto zamislio tako da ima nekoliko nivoa težine, ali su te celine podeljene prema kompleksnosti sadržaja. Na veb-sajtu će biti akcenat na nivou predznanja, a zatim i na težini gradiva.

Teško je pisati blog za ljude sa različitim predznanjem. Veb-sajt će mi omogućiti da lakše objasnim Java programiranje i da priču prilagodim nivou iskustva ljudi.

Java verzija

Veb-sajt će obrađivati najnovije verzije programskog jezika Java, dok se ovde na blogu proučava Java 8 SE.

Već sam pričao zašto je dobro da blog bude namenjen upravo Java 8 SE verziji Jave. Mislim da je dobro da postoje i blog i veb-sajt. To samo može da bude prednost za tebe jer ćeš imati izvor znanja i za verziju 8 i za novije verzije Jave.

Novi sajt namenjen učenju programiranja

Imam još jednu lepu vest za sve koji žele da uče programiranje: ovog vikenda sam pustio u rad i prototip veb-sajta koji je namenjen učenju programskog jezika Python.

Veb-sajt je u veoma ranoj fazi razvoja. Za sada postoji samo nekoliko tekstova o programiranju u programskom jeziku Pajton koji su namenjeni potpunim početnicima. Ali već spremam nove tekstove i polako ali sigurno razvijam veb-sajt. Verujem da ti može biti od koristi, jer Pajton je lep jezik, lak za učenje i veoma tražen u struci. Baci pogled:

Vijugaviput.rs

Toliko za sada, čim bude novih vesti u vezi Java veb-sajta oglasiću se ponovo povodom toga.

26.4.20

Operatori za pomeranje bitova udesno

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

Postoje dva operatora za pomeranje udesno

Za pomeranje bitova udesno u Javi se koriste dva operatora. Jedan od njih pri pomeranju udesno u krajnje levi bit upisuje nule, a drugi upisuje prethodnu vrednost.

Zašto postoje dva operatora za pomeranje udesno, a samo jedan za pomeranje ulevo?

Razlog je taj što je prilikom rada sa označenim brojevima u Javi bitan krajnji levi bit. Pri pomeranju ulevo se sa desne strance uvek ubacuju nule jer krajnje desni bit nema posebnu važnost u odnosu na ostale. Ali pošto je kod označenih brojeva bitno koji je krajnji levi bit, nije isto ako ubacimo nulu ili jedinicu tokom pomeranja. Zato postoje dve verzija pomeranja udesno.

Operator za pomeranje bitova udesno koji uvek dodaje nule sa leve strane naziva se logički operator za pomeranje bitova udesno.

Operator za pomeranje bitova udesno koji prvo analizira koja je vrednost krajnjeg levog bita pa zatim tu istu vrednost doda sa leve strane naziva se aritmetički operator za pomeranje bitova udesno.

Svaki od navedenih operatora opisaću u zasebnim postovima.


Pročitaj i nastavak:

Besplatni Java kurs - 26. deo - Operator za aritmetičko pomeranje udesno

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.

23.4.20

Operator ekskluzivno ILI - isključiva disjunkcija

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

Matematička operacija isključive disjunkcije, tj. ekskluzivno ILI(⊕) se u Javi predstavlja operatorom ekskluzivno ILI^.

^ ekskluzivno ILI - isključiva disjunkcija (XOR)

Operator isključive disjunkcije radi nad bitovima dva operanda u binarnom obliku. Radi tako što poredi odgovarajuće bitove oba operanda na sledeći način: samo ako su kod oba operanda bitovi na istoj poziciji različiti, rezultujući bit na toj poziciji imaće vrednost 1. U svim ostalim slučajevima, odgovarajući rezultujući bit će imati vrednost 0.

22.4.20

Operator za logičko sabiranje - disjunkciju

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

Matematička operacija disjunkcije, tj. logičkog sabiranja(∨) se u Javi predstavlja operatorom za logičko sabiranje - disjunkciju&.

| logičko sabiranje - disjunkcija (OR)

Operator disjunkcije deluje nad bitovima dva operanda u binarnom obliku. Ovaj operator poredi odgovarajuće bitove oba operanda na sledeći način: samo ako su kod oba operanda bitovi na istoj poziciji nule, rezultujući bit na toj poziciji takođe će imati vrednost 0. U svim ostalim slučajevima, odgovarajući rezultujući bit će imati vrednost 1.

21.4.20

Operator za logičko množenje - konjukciju

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

Matematička operacija konjukcije, tj. logičkog množenja(∧) se u Javi predstavlja operatorom za logičko množenje - konjukciju &.

& logičko množenje - konjukcija (AND)

Operator konjukcije radi nad bitovima dva operanda u binarnom obliku. Radi tako što poredi odgovarajuće bitove oba operanda na sledeći način: samo ako su kod oba operanda bitovi na istoj poziciji jedinice, rezultujući bit na toj poziciji imaće vrednost 1. U svim ostalim slučajevima, odgovarajući rezultujući bit će imati vrednost 0.

20.4.20

Unarni operator za invertovanje bitova

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

Matematička logička operacija negacije(¬) se u Javi predstavlja unarnim operatorom za invertovanje bitova ~. Bito je naglasiti da se negacija odnosi na bitove, a ne na celobrojnu vrednost!

~ Unarni operator za invertovanje bitova - negacija (NOT)

Operator negacije radi nad bitovima brojeva u binarnom obliku, a ne kao negacija brojeva u matematici. Npr. negacijom broja 3 u matematici se dobija -3, ali u Java programiranju negacijom pomoću unarnog operatora za invertovanje bitova se uvek dobiju brojevi za jedan manji od matematičke negacije. Zato je negirano 3 u Javi -4. Suprotna negacija bi bila: -4 negirano matematički je 4, a u Javi negacijom broja -4 dobija se broj 3.

Naravno, sve vreme pričam o unarnom operatoru za invertovanje bitova (~), a ne o unarnom operatoru minus (-). Unarni operator minus se pri negaciji ponaša „normalno”, kao minus u matematici.

Ova „čudna stvar” se dešava jer unarni operator za invertovanje bitova binarne brojeve transformiše u prvi komplement, a Java predstavlja negativne brojeve drugim komplementom. Razlika između prvog i drugog komplementa je upravo ta da je prvi komplement za 1 manji od drugog komplementa. Tačnije, drugi komplement se dobije tako što se prvo binarni broj invertuje (inverzni binarni broj se zove prvi komplement), a zatim mu se doda 1.