-
1. Data: 2009-02-10 20:25:54
Temat: AVR C co to robi??
Od: "Grupki" <j...@o...pl>
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.
-
2. Data: 2009-02-10 20:30:01
Temat: Re: AVR C co to robi??
Od: Sebastian Bialy <h...@p...onet.pl>
Grupki wrote:
> if (zmienna & (1<<3))
Jesli bit nr. 3 jest zapalony w zmienna to ...
-
3. Data: 2009-02-10 20:43:49
Temat: Re: AVR C co to robi??
Od: "mw158979" <...@t...pl>
"Grupki" <j...@o...pl> schrieb
> if (zmienna & (1<<3))
Testuje 4. bit zmiennej (liczac od 0)
1<<3 to jest 8 a & to AND bitowy.
hej
-
4. Data: 2009-02-10 20:53:31
Temat: Re: AVR C co to robi??
Od: "Grupki" <j...@o...pl>
Uzytkownik "Sebastian Bialy" <h...@p...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??
Czy mozliwa jest opcja 0<<4 przy jakiejs innej funkcji i to by testowalo 4
bit??
-
5. Data: 2009-02-10 21:08:47
Temat: Re: AVR C co to robi??
Od: "Szymon" <g...@a...onet.pl>
Użytkownik "Grupki" <j...@o...pl> napisał w wiadomości
news:gmspfv$k6m$1@news.supermedia.pl...
>
> Uzytkownik "Sebastian Bialy" <h...@p...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 (<<)
> 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
-
6. Data: 2009-02-10 21:10:16
Temat: Re: AVR C co to robi??
Od: Czarek <...@...pl>
Grupki wrote:
> Uzytkownik "Sebastian Bialy" <h...@p...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
> 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
-
7. Data: 2009-02-10 21:11:36
Temat: Re: AVR C co to robi??
Od: "Grupki" <j...@o...pl>
Użytkownik "Szymon" <g...@a...onet.pl> napisał w wiadomości
news:gmsqcr$rnv$1@news.onet.pl...
>
> Użytkownik "Grupki" <j...@o...pl> napisał w wiadomości
> news:gmspfv$k6m$1@news.supermedia.pl...
>>
>> Uzytkownik "Sebastian Bialy" <h...@p...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 ??
-
8. Data: 2009-02-10 21:11:55
Temat: Re: AVR C co to robi??
Od: Czarek <...@...pl>
Sebastian Bialy wrote:
> Grupki wrote:
>> if (zmienna & (1<<3))
> Jesli bit nr. 3 jest zapalony w zmienna to ...
^^^
4
Pozdrawiam
Czarek
-
9. Data: 2009-02-10 21:16:01
Temat: Re: AVR C co to robi??
Od: Czarek <...@...pl>
Grupki wrote:
> Użytkownik "Szymon" <g...@a...onet.pl> napisał w wiadomości
> news:gmsqcr$rnv$1@news.onet.pl...
>> Użytkownik "Grupki" <j...@o...pl> napisał w wiadomości
>> news:gmspfv$k6m$1@news.supermedia.pl...
>>> Uzytkownik "Sebastian Bialy" <h...@p...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
-
10. Data: 2009-02-10 21:29:19
Temat: Re: AVR C co to robi??
Od: aw <w...@w...pl>
Czarek pisze:
> 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.