logisches undoder

Gast #3115320
Lesenswert?

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!
Gast #3115343
Lesenswert?

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?
Gast #3115363
Lesenswert?

> 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ä?
Gast #3115384
Lesenswert?

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) ??
Gast #3115385
Lesenswert?

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.
Gast #3115389
Lesenswert?

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.
Gast #3115395
Lesenswert?

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?
Gast #3115399
Lesenswert?

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.
Gast #3115424
Lesenswert?

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!
#3115436
Lesenswert?

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.
Gast #3115476
Lesenswert?

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/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren