Showing posts with label operator za invertovanje bitova. Show all posts
Showing posts with label operator za invertovanje bitova. Show all posts

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.