Come cambiare i valori di due variabili senza utilizzare una variabile temporanea

September 4

Come cambiare i valori di due variabili senza utilizzare una variabile temporanea


Nella programmazione, ci sono molte volte che è necessario passare due valori variabili (come ad esempio in un Bubble Sort). La maggior parte delle persone si mostrerà come farlo con tre variabili e utilizzare le operazioni inutili, ma in grado di mostrare come farlo con due ... efficiente!

istruzione

1 Come cambiare i valori di due variabili senza utilizzare una variabile temporanea

XOR Comprensione:

XOR o OR esclusivo, è simile a quello comunemente usato INCLUSIVE-O, tranne che se entrambi gli ingressi sono 1, l'uscita è 0 (al contrario di INCLUSIVE-Or, dove il valore è 1).

Questo risolve questo caso in cui normalmente fare qualcosa di simile:

int II1 = 1;
int II2 = 2;
int tmp;

tmp = II1;
II1 = II2;
II2 = tmp;

2 Ora, la magia:

Un XOR tripla effettuata su due variabili passerà loro !!!

Così, in C #:

int II1 = 1;
int II2 = 2;

II1 ^ = II2;
II2 ^ = II1;
II1 ^ = II2;

Le variabili sono state ora scambiato senza utilizzare una variabile temporanea!