 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Roadracer Član


Pridružen-a: Ned 16 Okt 2005 18:41 Prispevkov: 482 Aktiv.: 2.03 Kraj: LJ/Litija
|
Objavljeno: Čet Feb 08, 2007 12:32 pm Naslov sporočila: Kaj pomeni ta izvorna koda v C |
|
|
Mene pa zanima kaj pomeni ta koda, oz kaj naredi? Sem iskal po googlu pa ne najdem nič uporabnega.
Vem da &= pomeni dvojiški logični IN kar lahko uporabimo tudi kot brisanje bitov. Samo ne razumem pa poante tega sklepa. Ker spremenljivka value je tipa byte kar pomeni 8 bitov. Preko funkcije getch() dobimo lahko spremenljivko gledano desetiško od 0 do 3. to pomeni kvečjemu 2 bita. Razmišljam prav?
Koda: |
byte value;
value = (byte)getch();
value &= 0x0F; |
Nazadnje urejal/a Roadracer Čet Feb 08, 2007 12:49 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.97
|
Objavljeno: Čet Feb 08, 2007 12:43 pm Naslov sporočila: Re: Kaj pomeni ta izvorna koda v C |
|
|
Roadracer je napisal/a: |
byte value;
value = (byte)getch();
value &= 0x0F; |
Gre za okrajšavo.
Isto, kakor i=i++; pomeni, da je novi i enak staremu i+1. Torej i=i+1
value &= 0x0F; pomeni, da je novavalue=staravalue & 0x0F;
Torej value=value & 0x0F;
To je torej maska, s katero izseješ enice iz spodnjih štirih bitov od value.
value= value & 00001111;
npr.: value=10100011
value=value & 00001111;
bo rezultat value= 00000011;
LP,
Igor _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
bray Član


Pridružen-a: Sre 19 Jan 2005 23:53 Prispevkov: 327 Aktiv.: 1.38 Kraj: Vransko
|
Objavljeno: Čet Feb 08, 2007 12:44 pm Naslov sporočila: |
|
|
V tem primeru bo value v vsakem primeru v obsegu od 0x00 do 0x0F...torej desetisko od 0 do 15. _________________ I didn't know it was impossible when I did it! |
|
Nazaj na vrh |
|
 |
Roadracer Član


Pridružen-a: Ned 16 Okt 2005 18:41 Prispevkov: 482 Aktiv.: 2.03 Kraj: LJ/Litija
|
Objavljeno: Čet Feb 08, 2007 12:46 pm Naslov sporočila: |
|
|
No očitno sem se malo prenaglil z postavljanjem vprašanj na forumu, ampak ker je to le forum ki naj bi bil v pomoč tudi ostalim bom razjasnil zadevo.
Vrednost spremenljivke value ni med desetiško 0 in 3 temveč med desetiško 48 in 51.
Če pogledamo z vidika matematike je to v desetiškem:
51 = 110011
Tej številki sedaj z logičnim IN operatorjem režemo zgornje bite
110011
& 1111
in tako dobimo rezultat
11 kar pa je desetiška 3.
Enako delamo tudi z ostalimi številkami.
Naj bo to lekcija za začetnike v C.  |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.97
|
Objavljeno: Čet Feb 08, 2007 12:55 pm Naslov sporočila: |
|
|
Roadracer je napisal/a: |
Vrednost spremenljivke value ni med desetiško 0 in 3 temveč med desetiško 48 in 51.
Če pogledamo z vidika matematike je to v desetiškem:
51 = 110011
Tej številki sedaj z logičnim IN operatorjem režemo zgornje bite
110011
& 1111
in tako dobimo rezultat
11 kar pa je desetiška 3.
Enako delamo tudi z ostalimi številkami.
|
value = 51
51 = 00110011
value = 00110011 & 00001111
value = 00000011
Lekcija gor ali dol. En byte vsebuje 8 bitov. Preveri svojo teorijo z &1F ali &3F, pa boš videl, da je treba upoštevati Vseh 8 bitov.
LP,
Igor _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
Roadracer Član


Pridružen-a: Ned 16 Okt 2005 18:41 Prispevkov: 482 Aktiv.: 2.03 Kraj: LJ/Litija
|
Objavljeno: Čet Feb 08, 2007 1:02 pm Naslov sporočila: |
|
|
igo maš prav. Treba jih je upoštevati ker je spremenljivka deklarirana kot byte, samo desetiška vrednost je tista ki jo potrebujem. Torej je 3 v primeru če gledam zadne 2 bita ali pa vseh 8. Imaš pa prav da se gleda uradno vse bite. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 5 dni
Powered by phpBB © 2001, 2005 phpBB Group
|