5,javase程式碼實戰-運算子——位運算實現兩個變數的互換及其他方式(四)
問題介紹:
在程式經常用到兩個變數的互換,特別是在基於交換原理的排序演算法中,如果需要大量的交換,那麼高效的交換兩個變數,無疑會提高程式的效率。
可以使用異或運算子來實現。
實現程式碼:
idea1(1, 2);
public static void idea2(int a,int b){
a =a^b;
b =b^a;
a =a^b;
System.out.println("a是:"+a);
System.out.println("b是:"+b);
}
總結:^ 有一個特點就是 a^a = 0 即自身和自身異或為0。三行程式碼中,第一行為第二行提供服務。第一行和第二行為第三行提供服務。執行第二行 b=b^a 也就是 b =b^a^b 因為b^b=0 所以 b= a;執行第三行 a =a^b 也就是a=a^b^a 即a =b 。
擴充套件:
其他方法1:利用加減運算子實現
a =a+b;
b =a-b;
a =a-b;
利用上面異或的分析方法,就可以理解了。這也是一種很好的方法,起碼不使用輔助變數。
其他方法2 ,使用輔助變數【不建議使用】
int c =0;
c=a;
a=b;
b=c;
相關文章
- 2,javase程式碼實戰-運算子——位運算實現加密解密 (一)Java加密解密
- 4,javase程式碼實戰-運算子——左移右移實現乘除(三)Java
- 3,javase程式碼實戰-運算子——更加精確的使用浮點數(二)Java
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- (位運算)兩個字串的位運算字串
- 位運算子及其應用
- 10,javase程式碼實戰-迴圈控制——使用while與自增運算子實現遍歷陣列(一)JavaWhile陣列
- 位運算子的計算
- 【原】兩個時間相加的運算子過載實現
- 位運算實現整數與位元組陣列轉換陣列
- 算數運算子
- 位運算與SQL實現SQL
- 四則運算實現 (轉)
- 複數的四則運算(C語言實現)C語言
- JavaScript 兩個++ 運算子JavaScript
- 不借助第三方變數實現兩個整數變數值的互換變數
- 兩個數換值四種方法實現
- 變數和運算子變數
- 四位計算機的原理及其實現計算機
- 位運算可以實現哪些功能
- 位運算實現加減乘除
- 如何用位運算實現整數的加減法
- html5拖放--15行js程式碼實現兩個div內容互換HTMLJS
- 簡單c++實現複數的四則運算C++
- 利用字串實現高精度數值運算(四)字串
- android位運算講解與實戰Android
- js實現的冪運算程式碼例項JS
- 雷達座標變換及其相關運算
- 變數,運算子,if判斷變數
- 算術運算子裡的特殊運算子
- 從一個加減法運算程式碼理解特殊運算子的過載
- 位運算子
- Javascript實現運算子過載JavaScript
- C++過載加號運算子實現兩個結構體的相加C++結構體
- 基礎拾遺:除了&和&&的區別,你還要知道位運算的這5個運算子
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- js利用求餘運算子實現各行變色效果JS
- XJSON 是如何實現四則運算的?JSON