RTV forum PL | NewsGroups PL

Jak działa warunek bitowy if (zmienna & (1<<3)) w programowaniu w C na AVR?

AVR C co to robi??

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak działa warunek bitowy if (zmienna & (1<<3)) w programowaniu w C na AVR?

Goto page 1, 2  Next

Grupki
Guest

Tue Feb 10, 2009 9:25 pm   



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.

Sebastian Bialy
Guest

Tue Feb 10, 2009 9:30 pm   



Grupki wrote:
Quote:
if (zmienna & (1<<3))

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

mw158979
Guest

Tue Feb 10, 2009 9:43 pm   



"Grupki" <janusz_tar@o2.pl> schrieb
Quote:
if (zmienna & (1<<3))

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

hej

Grupki
Guest

Tue Feb 10, 2009 9:53 pm   



Uzytkownik "Sebastian Bialy" <heby@poczta.onet.pl> napisal w wiadomosci
news:gmsokl$sif$1@nemesis.news.neostrada.pl...
Quote:
Grupki wrote:
if (zmienna & (1<<3))

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

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

Szymon
Guest

Tue Feb 10, 2009 10:08 pm   



Użytkownik "Grupki" <janusz_tar@o2.pl> napisał w wiadomości
news:gmspfv$k6m$1@news.supermedia.pl...
Quote:

Uzytkownik "Sebastian Bialy" <heby@poczta.onet.pl> napisal w wiadomosci
news:gmsokl$sif$1@nemesis.news.neostrada.pl...
Grupki wrote:
if (zmienna & (1<<3))

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

Czyli 1<<3 oznacza argument dla funkcji AND??

Tak. To maska do iloczynu (&).

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

Quote:
Czy mozliwa jest opcja 0<<4 przy jakiejs innej funkcji i to by testowalo 4
bit??

Zera nie ma sensu przesuwać:)

1<<4

Pozdrawiam,
Szymon

Czarek
Guest

Tue Feb 10, 2009 10:10 pm   



Grupki wrote:
Quote:
Uzytkownik "Sebastian Bialy" <heby@poczta.onet.pl> napisal w wiadomosci
news:gmsokl$sif$1@nemesis.news.neostrada.pl...
Grupki wrote:
if (zmienna & (1<<3))
Jesli bit nr. 3 jest zapalony w zmienna to ...
Czyli 1<<3 oznacza argument dla funkcji AND??

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

Quote:
Czy mozliwa jest opcja 0<<4 przy jakiejs innej funkcji i to by testowalo 4
bit??

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

Pozdrawiam

Czarek

Grupki
Guest

Tue Feb 10, 2009 10:11 pm   



Użytkownik "Szymon" <gasiorcz@atczop.onet.pl> napisał w wiadomości
news:gmsqcr$rnv$1@news.onet.pl...
Quote:

Użytkownik "Grupki" <janusz_tar@o2.pl> napisał w wiadomości
news:gmspfv$k6m$1@news.supermedia.pl...

Uzytkownik "Sebastian Bialy" <heby@poczta.onet.pl> napisal w wiadomosci
news:gmsokl$sif$1@nemesis.news.neostrada.pl...
Grupki wrote:
if (zmienna & (1<<3))

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

Czyli 1<<3 oznacza argument dla funkcji AND??

Tak. To maska do iloczynu (&).

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


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

Czarek
Guest

Tue Feb 10, 2009 10:11 pm   



Sebastian Bialy wrote:
Quote:
Grupki wrote:
if (zmienna & (1<<3))
Jesli bit nr. 3 jest zapalony w zmienna to ...
^^^


4

Pozdrawiam

Czarek

Czarek
Guest

Tue Feb 10, 2009 10:16 pm   



Grupki wrote:
Quote:
Użytkownik "Szymon" <gasiorcz@atczop.onet.pl> napisał w wiadomości
news:gmsqcr$rnv$1@news.onet.pl...
Użytkownik "Grupki" <janusz_tar@o2.pl> napisał w wiadomości
news:gmspfv$k6m$1@news.supermedia.pl...
Uzytkownik "Sebastian Bialy" <heby@poczta.onet.pl> napisal w wiadomosci
news:gmsokl$sif$1@nemesis.news.neostrada.pl...
Grupki wrote:
if (zmienna & (1<<3))
Jesli bit nr. 3 jest zapalony w zmienna to ...
Czyli 1<<3 oznacza argument dla funkcji AND??
Tak. To maska do iloczynu (&).
Dziesiętne 1 (czyli np. 00000001bin) przesunięte o 3 bity w lewo (<<)
Czyli to to samo co:
if (zmienna & 0b00000100) tylko inaczej zapisane ??

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

Pozdrawiam

Czarek

aw
Guest

Tue Feb 10, 2009 10:29 pm   



Czarek pisze:
Quote:
Sebastian Bialy wrote:
Grupki wrote:
if (zmienna & (1<<3))
Jesli bit nr. 3 jest zapalony w zmienna to ...
^^^

4

Pozdrawiam

Czarek
Oj chyba jednak 3.


00001000
76543210

również pozdr.

Grupki
Guest

Tue Feb 10, 2009 10:31 pm   



Quote:

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


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

grg12
Guest

Tue Feb 10, 2009 10:47 pm   



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


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

Bit zerowy, pierwszy, drugi, trzeci - wszystko sie zgadza Smile


Sebastian Bialy
Guest

Tue Feb 10, 2009 10:50 pm   



Czarek wrote:
Quote:
if (zmienna & (1<<3))
Jesli bit nr. 3 jest zapalony w zmienna to ...
4

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

Czarek
Guest

Tue Feb 10, 2009 11:33 pm   



Sebastian Bialy wrote:
Quote:
Czarek wrote:
if (zmienna & (1<<3))
Jesli bit nr. 3 jest zapalony w zmienna to ...
4
W C większośc rzeczy numerujemy od 0. Bity też.

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

Pozdrawiam

Czarek

Marcin
Guest

Wed Feb 11, 2009 1:52 am   



mw158979 pisze:
Quote:
if (zmienna & (1<<3))

Testuje 4. bit zmiennej (liczac od 0)

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

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak działa warunek bitowy if (zmienna & (1<<3)) w programowaniu w C na AVR?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map