www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Kaj pomeni ta izvorna koda v C

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Roadracer
Član
Član



Pridružen-a: Ned 16 Okt 2005 18:41
Prispevkov: 482
Aktiv.: 2.03
Kraj: LJ/Litija

PrispevekObjavljeno: Čet Feb 08, 2007 12:32 pm    Naslov sporočila: icon_shocked Kaj pomeni ta izvorna koda v C Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 15.97

PrispevekObjavljeno: Čet Feb 08, 2007 12:43 pm    Naslov sporočila: icon_shocked Re: Kaj pomeni ta izvorna koda v C Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
bray
Član
Član



Pridružen-a: Sre 19 Jan 2005 23:53
Prispevkov: 327
Aktiv.: 1.38
Kraj: Vransko

PrispevekObjavljeno: Čet Feb 08, 2007 12:44 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Roadracer
Član
Član



Pridružen-a: Ned 16 Okt 2005 18:41
Prispevkov: 482
Aktiv.: 2.03
Kraj: LJ/Litija

PrispevekObjavljeno: Čet Feb 08, 2007 12:46 pm    Naslov sporočila:   Odgovori s citatom

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. Razz
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 15.97

PrispevekObjavljeno: Čet Feb 08, 2007 12:55 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Roadracer
Član
Član



Pridružen-a: Ned 16 Okt 2005 18:41
Prispevkov: 482
Aktiv.: 2.03
Kraj: LJ/Litija

PrispevekObjavljeno: Čet Feb 08, 2007 1:02 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group