AVR C co to robi??

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
Nigdy nie programowalem w C ale musialem przerobic pewne funkcje w
dostarczonym programie. Jest to na tyle proste ze w sumie sobie poradzilem
ale nie moge zrozumiec dzialania jednego warunku. Poszczegolne skladowe wiem
co robia ale caly warunek jest dla mnie niezrozumialy. Brzmi on:
 if (zmienna & (1<<3))
To jest caly warunek a potem sa polecenia wykonywane jesli jest lub nie jest
spelniony.
Ale kiedy on jest albo nie jest spelniony??
Mozecie podpowiedziec.



Re: AVR C co to robi??
Quoted text here. Click to load it

Jesli bit nr. 3 jest zapalony w zmienna to ...

Re: AVR C co to robi??

Quoted text here. Click to load it

Czyli 1<<3 oznacza argument dla funkcji AND??
Czy mozliwa jest opcja 0<<4 przy jakiejs innej funkcji i to by testowalo 4
bit??



Re: AVR C co to robi??

Quoted text here. Click to load it

Tak. To maska do iloczynu (&).

Dziesiętne 1 (czyli np. 00000001bin) przesunięte o 3 bity w lewo (<<)

Quoted text here. Click to load it

Zera nie ma sensu przesuwać:)

1<<4

Pozdrawiam,
Szymon



Re: AVR C co to robi??

Quoted text here. Click to load it

Czyli to to samo co:
if (zmienna & 0b00000100) tylko inaczej zapisane ??



Re: AVR C co to robi??
Quoted text here. Click to load it

Z dokładnością że nie 0b00000100 a 0b00001000, to tak.

Pozdrawiam

Czarek

Re: AVR C co to robi??

Quoted text here. Click to load it

No to autor programu tez cos pomieszal bo w komentarzu pisze wlasnie o
trzecim bicie dlatego tez mi sie nic nie zgadzalo.



Re: AVR C co to robi??
Grupki pisze:
Quoted text here. Click to load it
Bit zerowy, pierwszy, drugi, trzeci - wszystko sie zgadza :)

Re: AVR C co to robi??
Grupki pisze:
Quoted text here. Click to load it

Tak. Ustawia 1  na najmłodzym bicie a potem przesuwa  operatorem << o
zadaną liczbę pozycji. Łatwiej widać który bit zapalasz niż gdy
wpisujesz 0b00010000.


--
Pozdrawiam
MD

Re: AVR C co to robi??
Quoted text here. Click to load it

Operator << to przesunięcie o daną liczbę bitów w lewo. W tym przypadku:

((000...00001)bin << 3) == (000...01000)bin == (8)dec

Operator & to operacja AND na poziomie bitów. Czyli przykładowo binarnie:

   00001011
& 00000110
----------
   00000010

To samo w zapisie dziesiętnym:

11 & 6 = 2

Quoted text here. Click to load it

To akurat nic nie zmieni... (0000000...0 << 4) == 0000...0000 :>

Pozdrawiam

Czarek

Re: AVR C co to robi??
Quoted text here. Click to load it
                ^^^

4

Pozdrawiam

Czarek

Re: AVR C co to robi??
Czarek pisze:
Quoted text here. Click to load it
Oj chyba jednak 3.

00001000
76543210

rF3%wnieBF% pozdr.


Re: AVR C co to robi??
Quoted text here. Click to load it

W C większośc rzeczy numerujemy od 0. Bity też.

Re: AVR C co to robi??
Quoted text here. Click to load it

Słusznie. Co nie zmienia faktu, że autora wątku też ta notacja - słuszna
skądinąd - zmyliła. :)

Pozdrawiam

Czarek

Re: AVR C co to robi??
Quoted text here. Click to load it

Testuje 4. bit zmiennej (liczac od 0)
1<<3 to jest 8 a & to AND bitowy.

hej



Re: AVR C co to robi??
mw158979 pisze:
Quoted text here. Click to load it

jeśli licząc od zera to będzie trzeci.
Pozdr. MD

Site Timeline