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

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