2010-11-18 14 views
6

Come XOR due doppi in JAVA?XORing due doppi in Java

semplice '^' non funziona per i doppi ... Dovrei convertire un doppio in forma binaria e farlo a bit? o c'è qualche altro modo?

+2

Non posso pensare a un bel modo di fare questo, ma sono curioso di sapere perché vorresti farlo prima ... puoi illuminarmi? – user507787

+0

Poiché XOR è un operatore bit per bit, di solito viene applicato solo ai numeri interi. Vuoi veramente provare a raddoppiare i bit XOR bit a bit (cosa che potrebbe portare a _really_ risultati strani) o vuoi semplicemente lavorare con gli ints? –

+0

Sto implementando un algoritmo di compressione per un flusso di doppi e quell'algoritmo richiede XORing di due numeri consecutivi. –

risposta

14

Se hai intenzione di fare questo bit è necessario utilizzare le funzioni di utilità Double per ottenere long rappresentazioni e poi convertire di nuovo ad un doppio alla fine:

double c = Double.longBitsToDouble(
    Double.doubleToRawLongBits(a)^Double.doubleToRawLongBits(b)); 
+0

Funziona ... Grazie. –