Seite 1 von 1
Per Befehl 0 in 1 umwandeln und umgekehrt?!
Verfasst: 29.09.2004 03:14
von nco2k
hi,
ich bräuchte einen befehl, mit dem ich eine variable mit dem wert 0, in eine variable mit dem wert 1 umwandeln kann und auch andersrum. gibt es überhaupt sowas?? vielleicht über das winapi?!
c ya,
nco2k
Verfasst: 29.09.2004 06:30
von NicTheQuick
Verfasst: 29.09.2004 10:51
von Froggerprogger
Auf diese Weise kannst Du auch zwischen beliebigen zwei anderen Werte hin- und herspringen, z.B.:
(liefert 20, 16, 20)
Du musst nur vorher einmal testen, ob das zuerst angewandte XOR den Wert 'addiert', oder 'subtrahiert'. Setzt man z.B. für a 19, ergibt sich ein anderes Verhalten : (19, 23, 19).
Verfasst: 29.09.2004 12:43
von freedimension
Froggerprogger hat geschrieben:Auf diese Weise kannst Du auch zwischen beliebigen zwei anderen Werte hin- und herspringen, z.B.:
Das dürfte aber auch nur mit 2er-Potenzen als zweite Zahl funktionieren was die Sache doch wieder etwas einschränkt

Verfasst: 29.09.2004 12:54
von wichtel
Und jetzt noch das Beispiel aus der Hilfe. Wenn man sich die Binär Werte anschaut wird das Verhalten auch klar un einfach.
Code: Alles auswählen
! Bitweises XOR. Sie sollten sich mit Binär-Zahlen auskennen, wenn Sie diesen Operator benutzen. Das Ergebnis dieses Operators ist der Wert des Ausdrucks auf LS, durch 'XOR' (Exklusives Oder) verknüpft mit dem Wert des Ausdrucks auf RS, und dies Bit für Bit. Der Wert jedes Bits wird entsprechend der nachfolgenden Tabelle gesetzt. Wird das Ergebnis des Operators nicht benutzt und es befindet sich eine Variable auf LS, dann wird das Ergebnis des Ausdrucks direkt in dieser Variable gespeichert. Dieser Operator kann nicht mit Variablen vom Typ 'String' benutzt werden.
LS | RS | Ergebnis
---------------------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
Beispiel:
; Zeigt die Benutzung mit Binär-Zahlen, da es so leichter ist, das Ergebnis zu sehen
a.w = %1000 ! %0101 ; Ergebnis wird %1101 sein
b.w = %1100 ! %1010 ; Ergebnis wird %0110 sein
bits = a ! b ; verknüpft jedes Bit von a und b durch XOR und benutzt das Ergebnis mit dem 'Gleich' Operator
a ! b ; verknüpft jedes Bit von a und b durch XOR und speichert das Ergebnis direkt in der Variable "a"
Verfasst: 29.09.2004 13:12
von Froggerprogger
Das dürfte aber auch nur mit 2er-Potenzen als zweite Zahl funktionieren was die Sache doch wieder etwas einschränkt
Ach herrjott
Schlagartig fallen mir die Schuppen von den Augen.
Ich hab vor meiner Antwort leider nicht über das 'warum' nachgedacht.
(OBWOHL ich kurz stutzig wurde, dass man ja so im Prinzip per XOR addieren könnte, tststs...)
Also, hier die korrigierte Version:
Man kann zwar zwischen
allen Zahlenpaaren hin- und herswitchen, aber nicht immer mit dem Absolutbetrag ihrer Differenz (wäre ja auch zu schön), sondern mit derjenigen Zahl, welche man wie folgt erhält:
Code: Alles auswählen
; hin- und herspringen zwischen Wert a und b mit jeweils einer Programmierzeile:
a = 21
b = 57
switchval = a!b
Debug a
a ! switchval ; nun erhält a den Wert b
Debug a
a ! switchval ; nun erhält a wieder seinen ursprünglichen Wert
Debug a
Verfasst: 29.09.2004 16:00
von nco2k
vielen dank jungs!
c ya,
nco2k