WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Xor / Werte "xoren" (http://www.wcm.at/forum/showthread.php?t=76611)

PierreK@ 10.11.2002 16:31

Xor / Werte "xoren"
 
Was ist XOR ?

ich muss 2 werte xoren , weiß aber nicht was das ist und wie das geht.

kann mir da wer helfen ?

Beispiel :

ce28297dede40fab3a0f6436aff3881f
xor
fefd887d70a73d88ac14f9a2774170a2
=
c0f38a1ca252cd81d96887dc152b0863

Who-T 10.11.2002 17:20

XOR ist eine logische operation, wird in programmiersprachen mit ^ gemacht.

Wahrheitstabelle:

0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

Sesa_Mina 10.11.2002 17:21

zerleg die zahlen in ihre einzelnen bits.

dann rechne nach folgender tabelle um.


Code:

XOR-Gatter    Input 1  Input 2  Output
                0        0        0
                0        1        1
                1        0        1
                1        1        0

Das Resultat wandle wieder zurück und du hast das Ergebnis.

PierreK@ 10.11.2002 17:32

Zitat:

Original geschrieben von Sesa_Mina
zerleg die zahlen in ihre einzelnen bits.

dann rechne nach folgender tabelle um.


Code:

XOR-Gatter    Input 1  Input 2  Output
                0        0        0
                0        1        1
                1        0        1
                1        1        0

Das Resultat wandle wieder zurück und du hast das Ergebnis.

danke für die hilfe !!!

aber ich verstehe nicht wie ich die zahlen in einzelne bits zerlegen soll.

kannst du mir ein beispiel geben ?

Sesa_Mina 10.11.2002 17:41

Nachdem du die Zahlen in hexadezimalform angegeben hast kannst du sie leicht in ihre bits zerlegen.


0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
10 (A) = 1010
11 (B) = 1011
12 (C) = 1100
13 (D) = 1101
14 (E) = 1110
15 (F) = 1111

Sesa_Mina 10.11.2002 17:42

also aus 4fac wird dann 0100 1111 1010 1100

und aus 1110 1011 0010 0001 wird eb21

PierreK@ 10.11.2002 17:49

Zitat:

Original geschrieben von Sesa_Mina
also aus 4fac wird dann 0100 1111 1010 1100

und aus 1110 1011 0010 0001 wird eb21

danke habs verstanden.

und muss ich jetzt die 2 zeilen die ich binär umgewandelt hab zusammen rechnen und dann wieder auf dezimal umwandeln ?

LDIR 10.11.2002 17:49

Zerlegung von Zahlen bis FF (Dez: 255) in Basic:

Wert=xxx (dezimal)

if wert>127 then dec wert,128:bit7=1 else bit7=0
if wert>63 then dec wert,64:bit6=1 else bit6=0
if wert>31 then dec wert,32:bit5=1 else bit5=0
if wert>15 then dec wert,16:bit4=1 else bit4=0
if wert>7 then dec wert,8:bit3=1 else bit3=0
if wert>3 then dec wert,4:bit2=1 else bit2=0
if wert>1 then dec wert,2:bit1=1 else bit1=0
if wert=1 then bit0=1 else bit0=0


Übrigens kann man in manchen Dialekten BIN$(xxx) verwenden um den Binärwert zu erhalten. Die oben gezeigte Routine ist aber komischerweise schneller als das BIN$() von Dark Basic Pro.

Im Prinzip mußt Du also nur den umgekehrten Weg der Binär zu Dezimalumrechnung gehen, statt multiplizieren, immer nur dividieren mit zweier-potenzen. Man kann die Routine also noch erweitern um größere Zahlen zu erfassen.

LDIR 10.11.2002 17:52

Zitat:

Original geschrieben von PierreK@


danke habs verstanden.

und muss ich jetzt die 2 zeilen die ich binär umgewandelt hab zusammen rechnen und dann wieder auf dezimal umwandeln ?

So ist es, wie die Routine gezeigt hat, nur eben mit multiplikation.
Natürlich kannst Du ja auch Binär direkt in Hex umwandeln...

Who-T 10.11.2002 18:05

also zumindest in c geht es, dass du ints direkt xor'st

sprich 4 ^ 2 wär zum beispiel 6
100
010
110

da ersparst du dir das manuelle bit-setzen und einzelne vergleichen.

wie das in der von dir benötigten sprache geht, weiß ich nicht


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag