Logische Operatoren ~ und !

Gast #1138227
Hallo!

Eine kurze Frage...

Situation:

Port D Pin 1 = 0
Port C Pin 1 = 1

Variante 1:

if( ( PINC & (1<<PINC1) ) & ~( PIND & (1<<PIND1) ) )

Variante 2:

if( ( PINC & (1<<PINC1) ) & !( PIND & (1<<PIND1) ) )

Warum funktioniert Variante 1, aber Variante 2 nicht?
Die beiden Operatoren bewirken doch das selbe oder nicht?

Vielen Dank,
ben
Gast
Und warum genau funktioniert Variante 2 im obigen Beispiel nicht?

( PIND & (1<<PIND1) ) dürfte FALSE sein, da das bit nicht gesetzt 
ist...mit dem ! bzw NOT davor müsste es doch wieder 1 sein?
Gast
Moin,

Zwischen den geklammerten Ausdrücken würde wohl
&& statt & sinnvoller sein ...

sonst ist
if( ( PINC & (1<<PINC1) ) & !( PIND & (1<<PIND1) ) )
immer false

if( ( PINC & (1<<PINC1) ) && !( PIND & (1<<PIND1) ) )
führt ein logisches UND aus

Gruß
Daniel
Gast
daaaaanke danke danke!
sehr schön!

das war also das problem...^^

da fällt mir grad noch ne frage ein...
aber die gehört hier net rein...also neuen thread machen...

cu,
ben
> da fällt mir grad noch ne frage ein...
> aber die gehört hier net rein...also neuen thread machen...

Ich glaub es wär besser wenn du dich mit den Grundlgaen von C vertraut 
machst als mit eröffnen von Threads
Gast
teilweise rennen hier leute rum...dat gibet nich o.O

frage: wozu ist dieses forum da?

damit gewisse leute meckern können wenn man es benutzt????

Bin eigentlich kein C Anfänger sondern programmiere schon jahre in C++ 
und mehreren anderen Sprachen. Mit den Bit-Operatoren und der 
Controller-Programmierung hatte ich bisher leider noch nicht sonderlich 
viel zu tun.

Wenn ich hier im Forum eine Frage stelle, dann hab ich da mindestens 
schon mehrere Seiten zu durchgelesen und probiere nebenbei hier am 
Testboard rum.

Aber wenn du dich dann besser fühlst...
Die Frage von der ich oben geredet habe, habe ich inzwischen selbst 
beantwortet.

MfG,
Ben
Gast
Glaub ich auch...
Wenn du nach Jahren in C++ wegen ~ bzw. ! hier nachfragst...

Mit F1 in deiner IDE bzw. in Deinem Handbuch oder Google & Co. hättest 
du wohl die Information schneller Gefunden.

Ja für was ist das Forum da? Nach meiner Ansciht eher um Richtige 
Problem zu lösen!
Gast
Für welches Software Projekt interessiert mich ne Bit Invertierung?
~ und ! sind was unterschiedliches... Was ich wissen wollte war bloß, 
wieso die eine Variante nicht funktioniert... Zur Lösung meines Problems 
hätten beide funktionieren müssen... Warum hat es nicht gefunkt? => Weil 
ich was anderes übersehen hatte...

Wenn ich ne 0 hab und sonst nix ist das Komplement nicht mehr 0 => true
Wenn ich ne 0 hab ist !0 => 1 => true
Das meinte ich mit das selbe...

Da es nicht funktioniert hat dachte ich der Fehler müsse was damit zu 
tun haben...hatte aber das & und das && übersehen...

Was in jedem Buch darüber steht weiß ich...daraus ging nur hervor was 
ich schon wusste...dass zum negieren beides benutzbar sein muss...

Wozu solche unnötigen kommentare zu hinterlassen...
Zuerst heißt es das forum soll für "richtige probleme" benutzt werden 
und dann wird der startschuss zum off topic gegeben...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.