C C 異或操作巧妙實現兩個數的交換操作

2021-08-26 22:40:51 字數 576 閱讀 4788

今天在看opengl載入tga格式影象用作紋理的**時,看到關於rgb(a)順序轉換的一行**時,捉一開始感到很困惑,後來想了想,就是實現交換操作。

原始**:

texture->imagedata[cswap] ^= texture->imagedata[cswap+2] ^= texture->imagedata[cswap] ^= texture->imagedata[cswap+2];寫了一段**測試了一下:

#include using namespace std; int main() dword time2 = gettickcount(); cout << "time2 = " << time2 << endl; cout << time2 - time1 << endl; }普通方法:

異或方法:

個人感覺還是用普通的方法好點。路過的給點建議哈~~

異或交換兩個數

void swap int a,int b 一般我們可以用異或來進行交換兩個數,以前我也不知道會有這個問題,最近在準備考研寫排序的時候,發現自己寫的swap函式在選擇排序的時候會出現個別0。通過查閱大佬們的部落格,發現問題是由於swap在對同乙個物件進行異或的時候,因為同乙個物件的位址是相同的,所以...

異或運算實現兩個數的交換

通常的交換兩個變數a,b的過程為 int temp temp a a b b temp 需借助上面的第3個臨時變數temp.採用下面的方法,對於給定兩個整數a,b,下面的異或運算可以實現a,b的交換,而無需借助第3個臨時變數 a a b b a b a a b 這個交換兩個變數而無需借助第3個臨時變...

異或運算實現兩個數的交換

通常的交換兩個變數a,b的過程為 int temp temp a a b b temp 需借助上面的第3個臨時變數temp.採用下面的方法,對於給定兩個整數a,b,下面的異或運算可以實現a,b的交換,而無需借助第3個臨時變數 a a b b a b a a b 這個交換兩個變數而無需借助第3個臨時變...