Problem beim rechnen mit uint32 uint64

Hallo folgendes Problem:
Ich bin gerade dabei eine Code aus C++ zu übersetzten. Nur komme ich leider nicht auf das richtige Ergebniss.

Bei folgender Aufgabe bekomme ich in C++ folgenden wert für ‘m1’ zurück: 1959434785

uint64_t tmp = 4703528431752368145;
uint32_t m1 = (tmp >> 32) ^ tmp;
cout << "m1 " << m1 << endl;

In Xojo 2019r3.1 bekomme ich folgenden wert für ‘m1’ zurück: 0

var tmp as uint64 = 4703528431752368145
var m1 as uint32 = Bitwise.ShiftRight(tmp,32) ^ tmp
system.debuglog "m1 " + m1.totext

Hat jemmand eine Idee?

Danke & Gruß Norbert

[s]var tmp as uint64 = 4703528431752368145

Ich würde den Wert in C ++ und In Xojo überprüfen, da ich vermute, dass hier das Problem beginnt[/s]

EDIT : Das ^ in C ++ ist XOR
In Xojo seine Potenzierung
Das scheint der ganze Fehler zu sein

Norman hat recht:

[code]Dim tmp As UInt64 = 4703528431752368145
Dim m0 As UInt32 = Bitwise.ShiftRight(tmp,32)
Dim m1 As UInt32 = Bitwise.BitXor(m0, tmp)

Break[/code]

Da kommt auch in Xojo dann 1959434785 raus

Danke