operatovi za manipulaciju bitovima

blejac

Primećen član
Poruka
608
E ovako , chitam neku C knjigu ... i ovo mi uopste nije jasno.

Shta zapravo znachi npr & operator!? Dali su mi ovaj primer u knjizi:

n=n&0177

Postavlja na nuli sve osim najnizhih 7 bitova n. Ok..to sam razumeo a onda daju sledetji primer:

x=1
y=2

x&y=0
x&&y=1

E to mi nije uopshte nije jasno o_O Ako bi neko mogao da objasni ... =|
 
lprsic:
E ovako , chitam neku C knjigu ... i ovo mi uopste nije jasno.

Shta zapravo znachi npr & operator!? Dali su mi ovaj primer u knjizi:

n=n&0177

Postavlja na nuli sve osim najnizhih 7 bitova n. Ok..to sam razumeo a onda daju sledetji primer:

x=1
y=2

x&y=0
x&&y=1

E to mi nije uopshte nije jasno o_O Ako bi neko mogao da objasni ... =|

Prvi primer postavlja na nulu (resetuje) sve osim najnižih 8 bitova, a ne 7. U pitanju je oktalna vrednost 177 koja u hexa iznos FF, odnosno u binarnom 11111111.

Drugi primer pokazuje razliku između logičkog i bit operator. Operator & je and na bit nivou. Pošto je u binarnom sistemu jedan 1, a 2 10 tada and na nivou bitova je 0. Operator && je logički and i pošto ni jedan od operanda nije false odnosno 0, tada je vrednost tog izraza 1.
 
Prvi slucaj je demonstracija upotrebe bitovnog operatora AND, i dakle konkretno na primjeru postavlja sve bitove sem zadnjih 7 na 0.
Ovo se jos naziva i tkz. maska, tj. poredi sve bitove varijable n sa odgovarajucim bitovima maske koja je u ovom slucaju oktalno 0177, i pridruzuje rezultat ponovo varijabli n.
Posto je rad sa bitovima izuzetno mocna stvar, objasnit cu ti konretno sta se desava:
Dakle n je recimo broj 13, binarno to izgleda 00001101, a maska je dakle 0177 oktalno, binarno to izgleda 01111111 (dekadno 127), i on poredi prvi bit sa prvim, drugi sa drugim itd
00001101
01111111 //posto je operator AND upitanju tada je rezultat 1 samo ako je i a i b = 1.
-------------
00001101

I dobili smo rezultat.
Ovako izgleda da nema smisla ovo raditi, al' recimo da zelimo da znamo samo vrijednost prva dva bita varijable n. Onda za masku uzimamo 3(dekadno). I dobit cemo stanje prva dva bita.

Jednostavan nacin konverzije oktalnog i heksadecimalnog brojevnog sistema u binarni je predstavljen 2^3 = 8 (oktalni), 2^4 = 16 (heksadecimalni), sto bi u prevodu znacilo da svaka oktalna cifra predstavlja 3 bita, odnosno 4 bita heksadecimalna cifra.
Pa je tako 177 oktalno konvertovano u binarni sistem kao 001-111-111.

Poz i nadam se da je sada situacija nesto jasnija ;)
 

Back
Top