Thema: Delphi 1+1=0 definieren?

Einzelnen Beitrag anzeigen

oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#16

Re: 1+1=0 definieren?

  Alt 8. Mai 2008, 05:51
Hi
Löst euch mal vom Integer und nehmt den Typ Word
Word ist eine Binäre Zahl, integerdagegen eine Ganzzahl von - irgendwas bis + irgendwas, wobei das höchstwertige Bit das Vorzeichen ist.
Eine Binäre Addition ist xOr, und was ist daran so kompliziert ?
Mathematisch gesehen ist die Subtraktion lediglich die Addition einer negativen Zahl, und um das hinzukriegen muß von der 2. Zahl das 2er Komplement gebildet werden. Ist schon lange her, das ich auf diesem Weg gerechnet habe, daher schaut selbst, wie's gemacht wird.
Nun der Weg:
wird nur mit Bit- Wert gerechnet reicht es 2 Boolean mit xOr zu verknüpfen, ansonsten geht xOr auch mit Byte, Word oder Doppelword.

z. B.
Wert 1 = 00011010 // Byte
Wert 2 = 00011001 // Byte

Addition
Wert 1 xOr Wert 2 (Binär, also Byte, Word oder Doppelword !)
(00011010 xOr 00011001 = 00110011 50 +49 = 99
Subtraktion
Wert2 invertieren // jedes Bit drehen -> 1er Komplement aus 00011001 wird 11100110
1 addieren // bin mir nicht 100% sicher, aber ich glaub, das ist die 2er Komplementbildung
Wert 2 xOr 1 // also 11100110 xOr 0000001 = 11100111
dann Wert 1 xOr Wert 2 //
00011010 xOr 11100111 = 00000001 50 +(-49) = 1

Der beschriebene Fehler, das da plötzlich negative Werte erscheinen liegt m.E. in der Verwendung von Interger !
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat