Seite 2 von 3
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: Fr Okt 31, 2014 6:10 pm
von mfro
XOR bedeutet "exclusives oder", d.h. nur wenn genau einer der beiden Operanden 1 ist, ist auch das Ergebnis 1.
Also
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0
oder, für dein (mein) Beispiel:
50 ^ 10 = 56
0011 0010 ^ 0000 1010 = 0011 1000
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: Fr Okt 31, 2014 6:18 pm
von ProgBeginner
Das würde für meine Logik jetzt bedeuten, XOR wäre eine Werteinvertierung ...
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: Fr Okt 31, 2014 7:59 pm
von mfro
ProgBeginner hat geschrieben:Das würde für meine Logik jetzt bedeuten, XOR wäre eine Werteinvertierung ...
Ähm, nö. Vielleicht solltest Du mal deine Logik überdenken
XOR ist XOR. Das Ergebnis ist genau dann 1, wenn genau einer der Operanden 1 ist. Man kann auch sagen, genau dann, wenn die Operanden unterschiedlich sind.
und:
man kann damit (und einer zusätzlichen UND-Verknüpfung, die ein evt. Carry hält) addieren. Die Wahrheitstabelle von "+" und "^" ist für einstellige Binärzahlen identisch. Damit lässt sich ein Addierer für beliebig lange Binärzahlen bauen:
Code: Alles auswählen
s1 = '0111' # 7
s2 = '0100' # 4
s3 = ''
carry = 0
summe = ''
for i in range (len(s1) - 1, -1, -1):
summe = int(s1[i]) ^ int(s2[i]) ^ carry
carry = int(s1[i]) & int(s2[i])
s3 = unichr(summe + ord('0')) + s3
print 'Ergebnis=', s3 # 7 + 4 = 11 -> 1011
Die Addierer der ALUs in deinem Rechner funktionieren nach exakt demselben Prinzip.
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: Fr Okt 31, 2014 10:39 pm
von ProgBeginner
Das Spielchen, über das wir hier philosophieren, kann man sich übrigens gerne unter
herunterladen - ist nicht sonderlich groß.
Über Verbesserungsvorschläge am Code bin ich jederzeit dankbar, das ist mein erstes Python-Projekt, was n bisschen mehr hergibt, als einfach nur "Hello World" auszugeben - von daher: I'm still learning
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: Sa Nov 01, 2014 6:04 pm
von oenone
Logisches UND vs Bitweises UND:
Logisches UND kennt nur zwei Werte: Wahr und Falsch. Das wird wohl das sein, das dein Taschenrechner kann.
Bitweises UND verknüpft die einzelnen Bits der (Integer-)Zahlen miteinander.
Das sollte es ein wenig verständlicher machen. (Gilt genauso mit ODER oder XODER).
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: So Nov 02, 2014 9:31 pm
von ProgBeginner
Dass bei Python ^ ein Operator für XOR ist, ist allerdings auch verwirrend.
^ kenn ich aus anderen Sprachen als Operator für Potenzrechnung.
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: So Nov 02, 2014 10:52 pm
von mfro
ProgBeginner hat geschrieben:...^ kenn ich aus anderen Sprachen als Operator für Potenzrechnung.
Ich kenn' längst nicht alle, aber mir würde auf Anhieb keine (vernünftige) Programmiersprache einfallen, die '^' für die Potenzierung benutzt
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: Mo Nov 03, 2014 2:47 pm
von oenone
ProgBeginner hat geschrieben:^ kenn ich aus anderen Sprachen als Operator für Potenzrechnung.
Mir fällt auf Anhieb keine ein. Bei welchen ist das so?
Bei den meisten wird ** als Potenzierung benutzt, sofern es überhaupt direkt als Operator verfügbar ist.
Bei LaTeX wird es als Hochstellung benutzt, allerdings hat das nicht viel mit Programmierung zu tun.
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: Mo Nov 03, 2014 2:54 pm
von ProgBeginner
Stimmt ... doch nicht, ich muss mich korrigieren.
Hatte das von PHP so in Erinnerung - aber auch Erinnerungen können sich täuschen.
Nobody's perfect oder wie war dat
Langer Rede kurzer Sinn - hab nix gesagt ( bzgl ^ ) - alles zurück auf 0
Re: Geht Varialeninhalte tauschen auch irgendwie anders?
Verfasst: Mo Nov 03, 2014 5:06 pm
von oenone
Hab doch eine gefunden: D benutzt ^^ als Exponential-Operator. Außerdem kann man in vielen Funktionalen Sprachen das ^ oder ^^ als Funktionsname benutzen (dort ist ja alles eine Funktion, es gibt quasi kene Operatoren).
Siehe auch:
http://rosettacode.org/wiki/Exponentiation_operator