000
01.10.2004, 17:19 Uhr
RedEagle
|
Tach. Ich möchte 2 (8 Bit große) Dualzahlen Addieren, allerdings nur mit Logischen opperationen (AND, OR, XOR)
Leider wird nicht immer richtig addiert (nur manchmal).
Der Header mit den Opperatoren:
C++: |
bool AND(bool Bit1, bool Bit2) { return Bit1 && Bit2; }
//---
bool OR(bool Bit1, bool Bit2) { return Bit1 || Bit2; }
//---
bool XOR(bool Bit1, bool Bit2) { return Bit1 ^ Bit2; }
|
Ich hoffe und denke mal, das das richtig ist.
Und jetzt die Funktion der addition:
C++: |
bool add(bool bit1, bool bit2, bool ubergabe) { bool erg; erg = XOR(ubergabe, XOR(bit1, bit2)); ubergabe = OR(AND(XOR(bit1, bit2), ubergabe), AND(bit1, bit2)); static int durchlauf=0; if(erg) ergebniss[durchlauf] = '1'; else ergebniss[durchlauf] = '0'; durchlauf++; return ubergabe; }
/* ergebniss ist ein char-array
Die funktion wird in einer schleife ausgerufen: */
//... for(i=0; i<=9; i++) { ubergabe = add(Byte1[i], Byte2[i], ubergabe); } //...
|
Wo liegt der Fehler (die Berechnung von ubergabe und erg habe ich als logische schaltung aus'm internet, und habe sie mit "Electronic DigSi 1.0" getestet, und hoffentlich richtig übernommen. -- MFG RedEagle |