ATNEL tech-forum
https://forum.atnel.pl/

Wynik pewnej operacji bitowej
https://forum.atnel.pl/topic23928.html
Strona 1 z 1

Autor:  krawi92 [ 21 wrz 2021, o 19:49 ]
Tytuł:  Wynik pewnej operacji bitowej

Hejka, mam pewnie pytanie. Otóż co jakiś czas zdarza mi się w kodzie popełnić "czeski" błąd przy operacji &=~ i wstawi mi się podwójna tylda. Kompilator nic nie krzyczy, a program wtedy naprawdę się dziwnie zachowuje, przez co długo dochodzę co się właściwie dzieje. I stąd pytanie z ciekawości, jak rozumieć operacje np PORTD &=~~(1<<6)? To równoważne bedzie z zapisem &=?

Autor:  moscow [ 21 wrz 2021, o 20:32 ]
Tytuł:  Re: Wynik pewnej operacji bitowej

krawi92 napisał(a):
[...]
jak rozumieć operacje np PORTD &=~~(1<<6)?
To równoważne bedzie z zapisem &=?

Jeśli dobrze zrozumiałem pytanie - to generalnie tak.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zapis taki jak wyżej będzie równoważny
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

lub też po prostu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

idąc po kolei
czyli po kolei
(1 << 6) => 0b01000000
~(1 << 6) => 0b10111111
~(~(1 << 6)) => 0b01000000
finalnie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  krawi92 [ 21 wrz 2021, o 21:47 ]
Tytuł:  Re: Wynik pewnej operacji bitowej

Zastanawialo mnie to, poniewaz wczoraj w jednym z makr wkradlo mi sie cos takiego, 4 piny sterowaly 2 silnikami, pod jeden z nich podlaczylem klawisz, ktory dzialal jak chcial,a wszystko bylo na 1 porcie. Nie moglem dojsc do ładu, czy to wina programu czy sprzętu.

Autor:  mario2015 [ 21 wrz 2021, o 21:56 ]
Tytuł:  Re: Wynik pewnej operacji bitowej

A dlaczego kompilator ma krzyczeć? Przecież nic nie zrobiłeś źle. Zaneguj coś co jest zanegowane, czyli raz zanegowana jedynka da zero a zaneguj ją drugi raz to co otrzymasz... z powrotem jedynkę.

Autor:  mirekk36 [ 21 wrz 2021, o 23:08 ]
Tytuł:  Re: Wynik pewnej operacji bitowej

krawi92 napisał(a):
i wstawi mi się podwójna tylda.


eeeh panie ... czytaj częściej mojego bloga, bo już od bardzo dawna podałem MEGA prosty sposób żeby się nigdy podwójna tylda nie pojawiała - bo to problem każdego początkującego ;) zresztą zobacz sam

http://mirekk36.blogspot.com/2012/03/ty ... lemow.html

a dokładnie to na forum jest opisane ;) post4081.html#p4081

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/