02/07/10 20:53
TheKaneB
Questo metodo funziona, a patto di non avere comportamenti strani della CPU in caso di overflow.
Un metodo universale, che non genera nessun tipo di errore di overflow ed è quindi implementabile dappertutto, è il seguente:
a = a XOR b
b = a XOR b
a = a XOR b
provare per credere ;-)
aaa
03/07/10 8:28
TheKaneB
molto banalmente, ti basta fare un cast ad un tipo per cui sia definito lo xor bitwise (int per i float, e long long int per i double). Il cast tra tipi di uguali dimensioni non comporta l'introduzione di istruzioni supplementari, ed eviti di ricorrere ad istruzioni assembly che non sono portabili :-p
aaa
03/07/10 12:06
Alex
ma perchè dovrebbe aver problemi?
a:=5;
b:=2;
a:=a+b;
b:=a-b;
a:=a-b;
insomma..alla fine e dimostrato matematicamente....basta semplificare...
aaa