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;
相關文章
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- 位運算子的計算
- 位運算實現整數與位元組陣列轉換陣列
- 位運算與SQL實現SQL
- 算數運算子
- 複數的四則運算(C語言實現)C語言
- 異或運算的巧用 → 不用額外的變數,如何交換兩個變數的值?變數
- JavaScript 兩個++ 運算子JavaScript
- 1的個數 【位運算】
- android位運算講解與實戰Android
- 位運算實現加減乘除
- 兩個新出的 JavaScript 運算子JavaScript
- 雷達座標變換及其相關運算
- XJSON 是如何實現四則運算的?JSON
- 算術運算子裡的特殊運算子
- 變數,運算子,if判斷變數
- 基礎拾遺:除了&和&&的區別,你還要知道位運算的這5個運算子
- 位運算子
- Javascript實現運算子過載JavaScript
- 正則實現數學運算
- 二進位制數的運算原理與閘電路實現
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- JavaScript實現兩個數的交換JavaScript
- 手寫程式語言-實現運算子過載
- 位運算子之---按位取反運算子(簡單易懂)
- 使用位運算、值交換等方式反轉java字串-共四種方法Java字串
- 1.變數和運算子變數
- 集合-運算實現
- 好程式設計師分享Python自動化運維開發實戰四-變數程式設計師Python運維變數
- Java位運算子Java
- Python 位運算子Python
- 用python實現四則運算的生成與判定Python
- Shell階段02 shell變數運算(整數運算/小數運算), shell變數案例變數
- 實現一個自動生成小學四則運算題目的命令列程式命令列
- Java基礎09:邏輯運算子、位運算子Java
- Java 基礎 之 算數運算子Java
- Python學習-算術運算子,賦值運算子和複合運算子Python賦值
- 位運算子與其他
- 算術運算子++、--的使用