AVR C co to robi??

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.

Reply to
Grupki
Loading thread data ...

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

Reply to
Sebastian Bialy

"Grupki" <janusz snipped-for-privacy@o2.pl schrieb

Testuje 4. bit zmiennej (liczac od 0)

1<<3 to jest 8 a & to AND bitowy.

hej

Reply to
mw158979

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

Reply to
Grupki

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

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

Pozdrawiam

Czarek

Reply to
Czarek

^^^

4

Pozdrawiam

Czarek

Reply to
Czarek

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

Pozdrawiam

Czarek

Reply to
Czarek

Oj chyba jednak 3.

00001000 76543210

również pozdr.

Reply to
aw

Grupki pisze:

Bit zerowy, pierwszy, drugi, trzeci - wszystko sie zgadza :)

Reply to
grg12

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

Reply to
Sebastian Bialy

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

Pozdrawiam

Czarek

Reply to
Czarek

mw158979 pisze:

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

Reply to
Marcin

Grupki pisze:

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.

Reply to
Mario

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.