日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

很厉害的交换两个数

發(fā)布時(shí)間:2024/4/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 很厉害的交换两个数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

a = a ^ b;
b
= a ^ b;
a
= a ^ b; 或者更為簡(jiǎn)單的: a ^= b ^= a ^= b;
個(gè)人理解: 異或操作是個(gè)偉大的發(fā)現(xiàn). 它同時(shí)具備了加法和減法的特性.? 首先, a^b的結(jié)果中以一種組合方式保存了a與b的值. 通過(guò) (a^b)^a即可從組合中還原出b原來(lái)的值. 同理, 再次從組合a中還原出b, 將結(jié)果賦給a即可實(shí)現(xiàn)互換. 同理: 一個(gè)更好理解的變形:            a = a + b ;
           b
= a - b ;
           a
= a - b ; 這種做法沒(méi)有簡(jiǎn)單的形式.
注意: 此方法唯一的不足就是如果你交換的兩個(gè)數(shù)是同一個(gè)地址, 也就是說(shuō)是同一個(gè)變量, 則會(huì)導(dǎo)致此變量最終為 0!? 因?yàn)?a ^= b 的時(shí)候, 實(shí)際上是將兩個(gè)數(shù)都置為 0, 因此已經(jīng)丟失了另外一個(gè)值. 改進(jìn): ? ? 上述同一變量導(dǎo)致結(jié)果為零, 是因?yàn)樵谕蛔兞恐袩o(wú)法存儲(chǔ)異或的結(jié)果. 此外, 我們知道, 同一個(gè)變量進(jìn)行 swap 的語(yǔ)義后, 值應(yīng)該不變.? ? ? 因此我們通過(guò)短路法對(duì)算式的兩個(gè)參數(shù)為同一值時(shí)進(jìn)行短路. 修改結(jié)果如下: &(a) == &(b) || (a ^= b ^= a ^= b);

?

?

For more Bit hacks, see:?http://www.cnblogs.com/walfud/articles/2267167.html

轉(zhuǎn)載于:https://www.cnblogs.com/walfud/articles/1993049.html

總結(jié)

以上是生活随笔為你收集整理的很厉害的交换两个数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。