Entwickler-Ecke
Alle Sprachen - Alle Plattformen - Problemchen C --> Delphi: "^="
GuaAck - Di 30.01.18 01:14
Titel: Problemchen C --> Delphi: "^="
Hallo,
ich möchte ein paar Zeilen C-Code in Pascal übersetzen, hänge aber bei folgender Zeile im C-Code:
C++-Quelltext
1:
| x ^= (x << 7) & 0x9D2C5680; |
Delphi-Quelltext
1:
| x := x ??? ((e SHL 7) AND $9D2C5680); |
Die rechte Seite ist unproblematisch. Aber was bedeutet der Compound-Operator. Der sollte x mit der rechten Seite potenzieren. Aber der Ausdruck rechts kann Milliarden erreichen, dann dauert die Berechnung sehr lange, das scheint mir nicht plausibel.
Hat jemand einen Tipp?
Gruß
GuaAck
Symbroson - Di 30.01.18 01:48
Das Dach ist ein XOR operator:
C++-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| #include <stdio.h>
char *to2(int x) { char *b = malloc(9), *p = b, z; for (z = 128; z > 0; z >>= 1) *p++ = (x & z) ? '1' : '0'; return b; }
int main() { printf("%s ^\n%s =\n%s\n", to2(0b1010), to2(0b1001), to2(0b1010 ^ 0b1001)); } |
output;
Quelltext
1: 2: 3:
| 00001010 ^ 00001001 = 00000011 |
Delete - Di 30.01.18 01:49
- Nachträglich durch die Entwickler-Ecke gelöscht -
GuaAck - Mi 31.01.18 00:26
Danke Frühlingsrolle,
ja, XOR war mein erster Ansatz. Gab aber ein falsches Ergebnis. Mit Google habe ich dann das mit dem Exponenten (für C) gefunden, aber das ist wohl falsch gewesen.
XOR ist plausibel, also bestätigt: Nicht alles glauben, was man mit Google findet.
Inzwischen habe ich auch die originale Beschreibung zu dem Algorithmus gelesen, da steht klar XOR drin.
Danke,
Gruß GuaAck
Delete - Mi 31.01.18 00:39
- Nachträglich durch die Entwickler-Ecke gelöscht -
GuaAck - Do 01.02.18 01:32
Frühlingsrolle,
Du bist genial, ja genau, Mersenne-Twister.
Soll aktuell der beste Random-Generator sein, deshalb wollte ich ihn in meine Delphi-Bilbliothek übernehmen.
Mein Fehler war trivialer Art, jetzt erzeugt meine Routine die gleichen Werte, wie der Original C-Code.
Gruß
GuaAck
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!