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



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3359 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Čet Okt 21, 2010 12:15 pm Naslov sporočila: C - začetki |
|
|
Ne poznam sintakse C-a. Vem kaj naredi sledeča funkcija:
Koda: |
int set_PORTB_bit(int position, int value)
{
// Sets or clears the bit in position 'position'
// either high or low (1 or 0) to match 'value'.
// Leaves all other bits in PORTB unchanged.
if (value == 0)
{
PORTB &= ~(1 << position); // Set bit # 'position' low
}
else
{
PORTB |= (1 << position); // Set bit # 'position' high
}
return 1;
} |
In razumem sledeče:
== pomeni pogoj enakosti
&= ne vem kaj pomeni morda boolov and z nekaj
~ ne vem, kaj pomeni, morda negacijo
|= ne vem kaj pomeni, verjetno boolov or
in kako za vraga razložiti
(1 << position)
In še prosim, da me napotite na neko interntno stran, kjer je sintaksa C-a razložena, da vas ne bom gnjavil s takimi vprašanje. |
|
Nazaj na vrh |
|
 |
Bizgec65 Član


Pridružen-a: Sre 10 Mar 2010 11:46 Prispevkov: 2099 Aktiv.: 11.29 Kraj: Trebnje
|
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3359 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Čet Okt 21, 2010 12:38 pm Naslov sporočila: |
|
|
Hvala. Že berem! |
|
Nazaj na vrh |
|
 |
bumbar Član


Pridružen-a: Sre 28 Okt 2009 20:25 Prispevkov: 62 Aktiv.: 0.33 Kraj: Cerkno
|
Objavljeno: Čet Okt 21, 2010 1:16 pm Naslov sporočila: |
|
|
Bom poskušal na kratko:
Vrstica PORTB &= ~(1 << position); postavi na 0 bit na poziciji "position".
&= je kompaktnejši zapis za PORTB = PORTB & (~(1 << position));
Enako velja za operator |=.
~ je negacija.
Operatorja >> in << sta za pomik v desno oz. levo.
Verjetno bo najlažje razumeti tole:
Recimo, da želim postaviti bit4 na vrednost 1. To storim z:
PORTB |= (1 << 4); ali krajše PORTB |= 0x10;
Izraz na desni strani operatorja |= je v bistvu maska za logični OR.
Če želim bit 5 postaviti na 0, uporabim
PORTB &= ~(1 << 5); ali krajše PORTB &= 0xDF;
Upam, da bo pomagalo. |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3359 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Čet Okt 21, 2010 2:34 pm Naslov sporočila: |
|
|
Imam občutek, da želi biti C malo skrivnosten in namenoma težko berljiv laiku.
Skrivnostno: PORTB |= (1 << 4);
Preprosto: PORTB = PORTB | 0x10; // to bi znal razumeti tudi laik |
|
Nazaj na vrh |
|
 |
Mihec Član


Pridružen-a: Pet 24 Mar 2006 20:10 Prispevkov: 415 Aktiv.: 1.77 Kraj: Mengeš
|
Objavljeno: Čet Okt 21, 2010 3:08 pm Naslov sporočila: |
|
|
Problem pri teh čudnih zapish je v tem, da če jih znaš uporabljati, ti pri marsikaterih drugih opravilih prav pridejo.
V tvojem primeru je mogoče oboje enakovredno, vendar pri kakšnem drugem primeru s poenostavljeno logiko nebi daleč prišel. No, vsaj ne tako hitro. |
|
Nazaj na vrh |
|
 |
Alex17 Član


Pridružen-a: Ned 28 Feb 2010 21:46 Prispevkov: 476 Aktiv.: 2.56 Kraj: Ljutomer
|
Objavljeno: Čet Okt 21, 2010 4:46 pm Naslov sporočila: |
|
|
Res se na začetku zdi, da bi bilo bolj pregledno in razumljivo napisano tako kot "preprosto" in da je skrivnostna varianta malo "čudna", vendar pozneje ugotoviš, da je prav v tem prednsot C-ja. Namreč ko je potrebno napisati kakih 30 enačb oz operacij (npr. spremenljivka = spremenljivka + (a+3)), še posebno pri kakšnih daljših imenih, se kar hitro navadiš na bližnjice (spremenljivka += a+3).
Govorim iz lastnih izkušenj, tudi sam sem namreč "začetnik" v C-ju in mi je do sedaj najljubši programski jezik. |
|
Nazaj na vrh |
|
 |
Majster Član


Pridružen-a: Sob 14 Nov 2009 1:05 Prispevkov: 344 Aktiv.: 1.81 Kraj: Majšperk
|
Objavljeno: Pet Okt 22, 2010 3:44 pm Naslov sporočila: |
|
|
Res je. C ima dosti stvari še v obliki kompaktnega zapisa. Ko se na stvar enkrat navadiš se ti zdi zelo priročna (kaj vem recimo a++; namesto a=a+1 .
Ampak:
You don't have to know every detail of C++ to write good programs.
(Bjarne Stroustrup, the creator of C++)  _________________ Smith & Wesson — the original point and click interface. |
|
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: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|