記得在某年的關務考試程式語言科目出了一個題目,
一般在交換兩個整數變數x,y時會這麼寫,
z=x;
x=y;
y=z;
那麼有辦法只用x,y兩個整數變數,
不使用第3個變數的情況下交換x,y的值嗎?
那時因為時間有點趕沒能想出來,
其實用簡單的加減法就能解出。
x=x+y;
y=x-y;
x=x-y;
一般在交換兩個整數變數x,y時會這麼寫,
z=x;
x=y;
y=z;
那麼有辦法只用x,y兩個整數變數,
不使用第3個變數的情況下交換x,y的值嗎?
那時因為時間有點趕沒能想出來,
其實用簡單的加減法就能解出。
x=x+y;
y=x-y;
x=x-y;




交換變數方法
x ^= y;y ^= x;
x ^= y;
就互換了 :P
是 CPU 處理邏輯運算的速度比其他運算來的快
y ^= x;
x ^= y;
神到了~ 用布林運算換耶~ (拜)
(動動腦~可防老 ^^)
有人可以說明一下嗎?
恩..我上google查了一下xor運算大概是這樣
0 xor 0 => 0
0 xor 1 => 1
1 xor 0 => 1
1 xor 1 => 0
所以
x ^= y;
y ^= x;
x ^= y;
應該是
x = y xor x;
y = x xor y;
x = y xor x;
這樣嗎??
然後我就看不懂了!!!
Comment Permissions: Allow commenting