Besplatni Java kurs - 18. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.
Pre nego što nastaviš da čitaš ovaj članak bilo bi dobro da se podsetiš šta je bit, šta je bajt i kakve to ima veze sa Java tipovima podataka. Takođe, korisno bi bilo da imaš predznanje iz matematičke logike. Ali ako nemaš, ne brini; objasniću ukratko osnove matematičke logike primenjene na Java programiranje.
Rad sa bitovima se odnosi na rad sa celobrojnim tipovima. Postoji pet celobrojnih tipova u Javi: byte, short, int, long i char. Tip char je, da podsetim, znakovni tip ali „ispod haube” je zapravo broj koji predstavlja redni broj karaktera iz tabele znakova. Taj redni broj je pozitivan ceo broj (ili nula). Npr. veliko latinično slovo A ima redni broj 65. Ostala četri celobrojna tipa mogu biti pozitivni, ali i negativni.
U programiranju se celobrojni tipovi kojima su predstavljeni samo pozitivni brojevi nazivaju neoznačeni, a tipovi kojima se predstavljaju i pozitivni i negativni brojevi se nazivaju označeni. Kod označenih je bitno da se sačuva informacija o znaku, tj. da li je broj pozitivan ili negativan. Kako je u kompjuterima sve predstavljeno nulama i jedinicama, tako se i znak predstavlja nulom ako je broj pozitivan, odnosno jedinicom ako je negativan.
Znak se, kao i kad koristimo „normalne” brojeve u matematici, piše „skroz levo”, npr pozitivan broj 3 se može napisati:
+3
u svetu matematike - naravno, plus se može izostaviti, podrazumeva se0_0000011
u Java svetu „ispod haube” - prva nula predstavlja znak „plus”
Podsetiću, binarni brojevi se mogu vizuelno razdvajati donjom crtom kako bi ljudima bili čitljiviji. Donja crta nema nikakve veze sa znakom broja. Navedeni broj 0_0000011 je isto što i 00000011, samo sam želeo da istaknem da krajnja leva nula predstavlja znak plus.
Napomena: Binarni broj 0_0000011 sam napisao neispravno. Kao što sam rekao kada sam pisao o celobrojnim literalima, binarni literali u Javi se pišu sa obaveznim prefiksom 0b, tako da bi ispravno napisan broj +3 u binarnom obliku bio 0b0_0000011, a ne 0_0000011. Prefiks sam izostavio da ne bi bilo zabune koja nula predstavlja znak. Namerno ću izostaviti prefiks 0b i u sledećem primeru.
Negativan broj -2 se može napisati:-2
u svetu matematike1_1111110
u Java svetu „ispod haube” - prva jedinica predstavlja znak „minus”
Napomena: Postoji više načina za prikaz negativnih binarnih brojeva. Java koristi tzv. drugi komplement, poznat i kao komplement dvojke i potpuni komplement.
Osnovi matematičke logike u Javi
Matematička logika je velika i važna oblast u matematici, ali za Java programiranje bitne si četiri operacije: negacija(¬), konjukcija(∧), disjunkcija(∨) i ekskluzivna disjunkcija(⊕). Negacija je jedina unarna operacija, ostale su binarne. Tablica istinitosti za ove četiri operacije izgleda ovako:
p | q | ¬p | p∧q | p∨q | p⊕q |
---|---|---|---|---|---|
⊥ | ⊥ | ⊤ | ⊥ | ⊥ | ⊥ |
⊥ | ⊤ | ⊤ | ⊥ | ⊤ | ⊤ |
⊤ | ⊥ | ⊥ | ⊥ | ⊤ | ⊤ |
⊤ | ⊤ | ⊥ | ⊤ | ⊤ | ⊥ |
Slova p i q predstavljaju proste iskaze. Pomoću prostih iskaza i logičkih veznika (¬, ∧, ∨ i ⊕) grade se složeniji iskazi: ¬p, p∧q, p∨q i p⊕q. Tačnost iskaza prikazuje se znacima ⊤(tačno) i ⊥(netačno).
Negacija(¬)
Negacija je unarna operacija koja iskaz na koji se odnosi pretvara u suprotan: tačno postaje netačno, a netačno postaje tačno.
p | ¬p |
---|---|
⊥ | ⊤ |
⊤ | ⊥ |
Konjukcija(∧)
Konjukcija je operacija čiji rezultat će biti tačno samo ako su oba operanda tačna. U svim ostalim slučajevima rezultat konjukcije je netačno.
p | q | p∧q |
---|---|---|
⊥ | ⊥ | ⊥ |
⊥ | ⊤ | ⊥ |
⊤ | ⊥ | ⊥ |
⊤ | ⊤ | ⊤ |
Disjunkcija(∨)
Disjunkcija je operacija čiji rezultat će biti uvek tačno sem ako su oba operanda netačna. Ako su oba operanda netačna rezultat će biti netačno.
p | q | p∨q |
---|---|---|
⊥ | ⊥ | ⊥ |
⊥ | ⊤ | ⊤ |
⊤ | ⊥ | ⊤ |
⊤ | ⊤ | ⊤ |
Ekskluzivna disjunkcija(⊕)
Ekskluzivna disjunkcija je operacija čiji rezultat će biti tačno samo ako su operandi međusobno različiti. U suprotnom, rezultat će biti netačno.
p | q | p⊕q |
---|---|---|
⊥ | ⊥ | ⊥ |
⊥ | ⊤ | ⊤ |
⊤ | ⊥ | ⊤ |
⊤ | ⊤ | ⊥ |
Pročitaj i nastavak:
Besplatni Java kurs - 19. deo - Java operatori za bitove
No comments:
Post a Comment