使用異或運算交換2個數值
#include<iostream>
using namespace std;
int main(){
int a=1;//二進位制位0001
int b=2;//二進位制位0010
cout<<"交換前a="<<a<<" "<<"b="<<b<<endl;
int c=a^b;//經過異或運算(相同為0 不同為1)後 得0011 等於3
a=c^a;//經過異或運算後 得0010 等於2
b=c^a;//經過異或運算後 得0001 等於1
cout<<"交換後a="<<a<<" " <<"b="<<b<<endl;
return 0;
}
執行結果
總結
一個數異或運算2次相同的數,數值不會改變,比如int temp=a^b^b,其temp的結果就是a
相關推薦
使用異或運算交換2個數值
#include<iostream> using namespace std; int main(){ int a=1;//二進位制位0001 int b=2;//二進位制位0010 cout<<"交換前a=
深思通過異或運算交換兩個變數
平常程式設計的時候交換兩個數的需求很常見,比如說氣泡排序裡面的位置交換,我們一般都會使用下面這種方法: public void swap(int a, int b){ int temp = a; a = b; b = temp; } 最近右發現一個抖機靈的方法,看著逼格很
使用異或運算交換兩個變數位置的演算法非常低!
看了很多程式設計方面的知識,在慕課網上的一個關於二進位制的視訊中,偶然聽見老師說採用異或運算的方法交換兩個數字的順序可以提高效率,原因是位運算是直接對二進位制位進行運算,而二進位制位更接近底層。 因此,我一直信誓旦旦的給朋友們普及異或運算的高效率,直到被別人反駁之後,我去網上搜了很多相關的文章。
Java中異或運算實現兩個整數的交換以及其功能函式實現
今天學習到一種超酷炫的交換兩個整數的方法,給各位分享一下。異或運算屬於位運算的一種,首先簡單介紹一下異或預算的語法規則。 假設a與b為不相等的兩個整數。 (1)a^a=0; (2)a^b
異或操作符交換兩個整數
異或:相同為0 不同為1 例:一位二進位制異或取值表 取值 取值 結果 0 0 0 0 1 1 1 0 1 1 1 0 那麼我們交換一個兩個整數值就不需要使用中間值了 public static void main(String[] args) { int a = 2; //二進
CSU 1240: 低調,低調。(異或找出2個只出現1次的數)
DescriptionStaginner總是喜歡把自已的名字寫在他出的題目裡。CSU-ACM協會的會長想,這孩子是不是想出名想瘋了,於是決定考一考他。任意正整數N,不大於N且與N互質的正整數個數記為P,
用異或來交換兩個變數更耗時
FROM:陳碩 http://blog.csdn.net/solstice/article/details/5166912 翻轉一個字串,例如把 "12345" 變成 "54321",這是一個最簡單的不過的編碼任務,即便是 C 語言初學者的也能毫不費力地寫出類似如下的程式
用異或運算交換兩個數
平常交換兩個數一般是利用一箇中間變數,其實可以利用異或^也可以實現交換,而且效率更快哦! 程式碼如下: void Swap(int& a,int& b){ if(a!=b){ a^=b; b^=a; a
java異或運算交換兩個數的陷阱
我們知道,用異或運算可以不用定義中間變數就可以交換兩個數。如下: <span style="font-size:14px;">int a=2; int b=3; System.out.println("交換前:a="+a+" b="+b); a=a^b;
用異或來交換兩個變數是錯誤的
用異或來交換變數是錯誤的 翻轉一個字串,例如把 “12345” 變成 “54321”,這是一個最簡單的不過的編碼任務,即便是 C 語言初學者的也能毫不費力地寫出類似如下的程式碼: // 版本一,用中間變數交換兩個數,好程式碼 void reverse_
交換2個數值的方法
如何交換2個變數的值?一般來說,想到的方法是再找一個臨時變數,通過一種順序存放的方式來達到交換值的效果。 比如有a,b這2個變數。取同類型的變數temp。 temp = a ; a = b ; b = temp ; 這樣就完成了交換。 但這樣做的話會多使用一個
常見位操作及運算應用舉例:1,C語言中位運算子異或“∧”的作用2,異或運算的作用3,&(與運算)、|(或運算)、^(異或運算)
1 C語言中位運算子異或“∧”的作用: 異或運算子∧也稱XOR運算子。它的規則是若參加運算的兩個二進位同號,則結果為0(假);異號則為1(真)。即0∧0=0,0∧1=1,1∧1=0。如: 即071∧052,結果為023(八進位制數)。 “異或”的意思是判斷兩個相應的位值是否為“
採用位異或方式將兩個變數數值調換
1 package debug; 2 3 class Demo2 { 4 public static void main(String[] args){ 5 int a = 1; 6 int b = 2; 7 System.out.
采用位異或方式將兩個變量數值調換
clas 兩個 rgs package 異或 dem int span [] 1 package debug; 2 3 class Demo2 { 4 public static void main(String[] args){ 5
異或運算來實現兩個變數互換
一般情況下,如果我們要實現兩個變數互換需要藉助於一個第三方臨時變數,這個臨時變數可以臨時存放某一個變數的值,幫助我們完成值的交換。有沒有不需要其他變數、直接實現值互換的方法呢? 答案是:當然有。 &n
使用異或運算實現兩數交換
通常我們實現兩數交換不得不引入一個臨時變數temp作為媒介,而使用異或運算也能實現同樣的功能,甚至無需使用臨時變數。 這是一個通常的做法: int main(){ int a=1,b=2,temp; temp=a; a=b; b=temp; printf("%d,%d\n",a,b); ret
對位法轉換為2進位制 & 與運算、| 或運算、^異或運算、位運算
2進位制是轉換的媒介 10進位制對位法 128 64 32 16 8 4 2 1 8進位制對位法 4 2 1 4
使用異或運算實現兩處記憶體的原地值交換
^(異或運算)與|(或)和&(與)的一個顯著的不同點在於,異或運算能夠儲存兩個位串一種關係,舉個簡單的例子,比如對於a=10,b=01這兩個二進位制數來說,他們的異或結果為11, 從這個結果上我們就可以非常直觀地得出a與b在兩個位上的都是“相異”的,所以如果我們知道
通過位異或來交換a,b的值和通過中間變量交換a,b的值
[] printf urn %d include ret std char har //通過位異或來交換a,b的值 #include <stdio.h> int main(int argc, const char * argv[]) { int a=20,
位異或運算符的特點
als 條件表達式 偶數 異或 lean 基礎 boolean 語法 按位取反 * A:邏輯運算符有哪些 * &, |, ^, ! * &&, || * B:案例演示 * 邏輯運算符的基本用法 * 註意事項: * a:邏輯運算符一般用於連