Hallo, wie schreibt man in C ein logisches undoder? also nicht und, und nicht oder, sondern beides zusammen. also nicht oder oder und oder und oder und, sondern quasi und und oder oder oder und und.wie macht man sowas? gibts dafür einen logischen operator? <<kopfplatz>> <<grusel>> danke!
Wie sieht denn die Logiktabelle eines "undoder" aus? Und worin unterscheidet sie sich von einem "oderund"? PS: Als TTLs gabs mit 7452&Co ICs, die ungefähr so hiessen.
Walter S. schrieb: > Leider 3 Tage zu spät ... hä warum? A. K. schrieb: > Wie sieht denn die Logiktabelle eines "undoder" aus? Und worin > unterscheidet sie sich von einem "oderund"? Einen Unterschied zwischen und oder und oder und gibt es natürlich nicht. Wahrheitstabelle: a b und oder undoder -------------------------- w w w f w w f f w w f w f w w f f f f f irre ich mich da? ist das erste oder doch w?
Du hast eine sehr exklusive Vorstellung vom oder, denn dein oder ist kein oder doch dein und oder ist ein oder.
Hallo > a b und oder undoder > -------------------------- > w w w f w > w f f w w > f w f w w > f f f f f > > irre ich mich da? ist das erste oder doch w? Ich würde sagen das ist eher und xor oder undoder habe ich noch nie gehört. Martin
> Du hast eine sehr exklusive Vorstellung vom oder, denn dein oder ist > kein oder doch dein und oder ist ein oder. verstehe, also ist in wahrheit (!) oder das gleiche wie mein und oder also brauchts kein und oder und es fehlt quasi mein oder, also ein oder, das ein oder !und wäre gibt es nicht? also ist diese wahrheitstabelle wahr? a b und oder undoder -------------------------- w w w w w w f f w w f w f w w f f f f f undoder = oder ja? > und xor oder hä?
Maus schrieb: > irre ich mich da? Massiv siehe was Martin B gesagt hat. Was du als "oder" bezeichnest ist ein XOR Was du mit "undoder" bezeichnet hast ist ein einfaches "OR"
Also bei der Wahrheitstabelle ist dein "oder" falsch.
Und dein "undoder" ist allgemien ein oder.
Um auf deine Frage zurückzukommen:
In C wird es mit | gemacht:
bool a,b;
if (a | b)
{
}
Wahrheitstabelle: a b AND XOR OR -------------------------- w w w f w w f f w w f w f w w f f f f f Was davon möchtest Du? In C gibt es noch die Unterscheidung zwischen logisch (0,1) und bitweise (alle 8,16,32 oder 64 Bits).
Udo Schmitt schrieb: > Maus schrieb: >> irre ich mich da? > Massiv > > siehe was Martin B gesagt hat. > > Was du als "oder" bezeichnest ist ein XOR > Was du mit "undoder" bezeichnet hast ist ein einfaches "OR" ah! ok, verstehe exclusive or http://en.wikipedia.org/wiki/Exclusive_disjunction xor kann man aber nicht für Variablen verwenden, oder doch? icke schrieb: > Um auf deine Frage zurückzukommen: > In C wird es mit | gemacht: > bool a,b; > if (a | b) > { > } na ich meinte ja das logische oder und nicht das bitweise oder, also int a, b; if (a || b) { } Was ist der Unterschied zwischen if (a | b) und if (a || b) ??
icke schrieb: > In C wird es mit | gemacht: > bool a,b; > if (a | b) > { > } Ja, auf jeden fall Lazy Evaluation vorbeugen, damit man ja auf jeden fall nix rausoptimieren kann. Meine güte, logisches oder in C sollte man immer per > || machen, nur wenn das zweite eine Funktion ist, die auf jeden fall ausgeführt werden muss sollte man | machen, aber das ist ohnehin unsauber.
icke schrieb: > In C wird es mit | gemacht: > bool a,b; > if (a | b) Das ist nicht korrekt. Boolsche Operatoren sind || (oder) und && (und) Binäre operatoren sind | und & Der TO braucht ein C Buch, das sind absolute Grundlagen.
Maus schrieb: > na ich meinte ja das logische oder und nicht das bitweise oder, also > int a, b; > if (a || b) > { > } > > Was ist der Unterschied zwischen if (a | b) und if (a || b) ?? > a | b macht bitweises oder von a und b und guckt DANN, ob das 0 ist oder nicht. > a || b prüft dagegen beispielsweise garnicht mehr ob b wahr ist, wenn a schon wahr ist, da der vergleich ja unnötig wäre. Das heißt lazy evaluation und macht dein programm schneller.
Peter Dannegger schrieb: > Wahrheitstabelle: > > a b AND XOR OR > -------------------------- > w w w f w > w f f w w > f w f w w > f f f f f > > Was davon möchtest Du? > > In C gibt es noch die Unterscheidung zwischen logisch (0,1) und bitweise > (alle 8,16,32 oder 64 Bits). ah ja ok, logischerweise möchte ich das logische OR Guest schrieb:>> a | b > macht bitweises oder von a und b und guckt DANN, ob das 0 ist oder > nicht. >> a || b > prüft dagegen beispielsweise garnicht mehr ob b wahr ist, wenn a schon > wahr ist, da der vergleich ja unnötig wäre. Das heißt lazy evaluation > und macht dein programm schneller. ah, ist das der einzige Unterschied?
Maus schrieb: > Guest schrieb:>> a | b >> macht bitweises oder von a und b und guckt DANN, ob das 0 ist oder >> nicht. >>> a || b >> prüft dagegen beispielsweise garnicht mehr ob b wahr ist, wenn a schon >> wahr ist, da der vergleich ja unnötig wäre. Das heißt lazy evaluation >> und macht dein programm schneller. > > ah, ist das der einzige Unterschied? Bei ODER ist das alles, was mir bekannt ist. Andererseits bei UND: > 1 && 2 = wahr > 1 & 2 = 0 = falsch Allerdings auch hier die Lazy Evaluation, wenn bei && der erste Term falsch ist, wird der zweite einfach übersprungen.
Maus schrieb: > ah, ist das der einzige Unterschied? Nein.
1 | char a = 1, b = 2; |
2 | |
3 | if( a & b ){} // ist falsch |
4 | |
5 | if( a && b ){} // ist wahr |
Guest schrieb: >> 1 & 2 = 0 = falsch ? hä ? 1 ? 2 ? hä? was ? Peter Dannegger schrieb: >> ah, ist das der einzige Unterschied? > > Nein.char a = 1, b = 2; > > if( a & b ){} // ist falsch > warum?
Maus schrieb: > ? hä ? 1 ? 2 ? hä? was ? In Deinem C-Buch, das Du ja ganz sicher schon nebenbei aufgeschlagen haben wirst, steht, worin der Unterschied zwischen logischen und bitweisen Verknüpfungen besteht.
glaub ich habs kapiert http://en.wikipedia.org/wiki/Bitwise_operation#AND sagt "A bitwise AND takes two binary representations of equal length and performs the logical AND operation on each pair of corresponding bits. The result in each position is 1 if the first bit is 1 and the second bit is 1; otherwise, the result is 0." danke für das grundlagenlegen, hat spass gemacht. schönen tag noch!
A. K. schrieb: >> warum? > > Besorg dir ein C Handbuch. Jede weitere Mühe hier ist sinnlos. das Lustige ist ja, dass in keinem Buch das Letzte Warum steht ... naja aber wollen wir Humpty Dumpty mal schlafen legen ...
Guest schrieb: > macht bitweises oder von a und b und guckt DANN, ob das 0 ist oder > nicht. das bitweise Oder 'guckt' gar nichts. Das Ergebnis hat den gleichen Datentyp der beiden Operanden. Nur wenn du das Ergebnis einem boolschen Ausdruck zuweist (explizit oder implizit z.B. in einer Bedingung), dann ist der boolsche Ausdruck false wenn das Ergebnis = 0 ist und true wenn es != 0 ist.
Garden schrieb: > Saukomisch hier ;-) Schön daß du es komisch findest, ich finde es noch komischer, daß in deinen Links nur logische Operatoren besprochen werden und du das offenbar nicht mal merkst. Also ist der Thread wohl bitter nötig, leider :-)
Udo Schmitt schrieb: > Garden schrieb: >> Saukomisch hier ;-) > > Schön daß du es komisch findest, ich finde es noch komischer, daß in > deinen Links nur logische Operatoren besprochen werden und du das > offenbar nicht mal merkst. > Also ist der Thread wohl bitter nötig, leider :-) Der OP hatte nach logischen Operatoren gefragt. Für Bitweise OPeratoren gibt es bei ET-Tutorials noch: http://et-tutorials.de/1908/bitweise-manipulation/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.