異或操作符交換兩個整數
異或:相同為0 不同為1
例:一位二進位制異或取值表
取值 取值 結果
0 0 0
0 1 1
1 0 1
1 1 0
那麼我們交換一個兩個整數值就不需要使用中間值了
public static void main(String[] args) {
int a = 2; //二進位制表示 10
int b = 1;//二進位制表示 01
a = a ^ b;// a = 10 ^01 = 11 = 3
b = b ^ a;// b = 01^11 = 10 = 2
a = a ^ b;// a = 11^10 = 01 = 1
System.out.println(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; //二進
Java中異或運算實現兩個整數的交換以及其功能函式實現
今天學習到一種超酷炫的交換兩個整數的方法,給各位分享一下。異或運算屬於位運算的一種,首先簡單介紹一下異或預算的語法規則。 假設a與b為不相等的兩個整數。 (1)a^a=0; (2)a^b
深思通過異或運算交換兩個變數
平常程式設計的時候交換兩個數的需求很常見,比如說氣泡排序裡面的位置交換,我們一般都會使用下面這種方法: public void swap(int a, int b){ int temp = a; a = b; b = temp; } 最近右發現一個抖機靈的方法,看著逼格很
使用異或運算交換兩個變數位置的演算法非常低!
看了很多程式設計方面的知識,在慕課網上的一個關於二進位制的視訊中,偶然聽見老師說採用異或運算的方法交換兩個數字的順序可以提高效率,原因是位運算是直接對二進位制位進行運算,而二進位制位更接近底層。 因此,我一直信誓旦旦的給朋友們普及異或運算的高效率,直到被別人反駁之後,我去網上搜了很多相關的文章。
用異或來交換兩個變數更耗時
FROM:陳碩 http://blog.csdn.net/solstice/article/details/5166912 翻轉一個字串,例如把 "12345" 變成 "54321",這是一個最簡單的不過的編碼任務,即便是 C 語言初學者的也能毫不費力地寫出類似如下的程式
用異或來交換兩個變數是錯誤的
用異或來交換變數是錯誤的 翻轉一個字串,例如把 “12345” 變成 “54321”,這是一個最簡單的不過的編碼任務,即便是 C 語言初學者的也能毫不費力地寫出類似如下的程式碼: // 版本一,用中間變數交換兩個數,好程式碼 void reverse_
用異或交換兩個整數的陷阱
前面我們談到了,可用通過異或運算交換兩個數,而不需要任何的中間變數。 如下面: void exchange(int&a,int&b) { a ^=b; b ^=a; a ^=b; } 然而,這裡面卻存在著一個非常隱蔽的陷阱。通常我們
【C語言】使用異或運算子交換兩個數
異或交換兩個數: #include<stdio.h> #include<stdlib.h> int main() { int a, b; a = 10; b = 20; a= a^b; b =a^b; a =a^b; printf("%d\n%d\n", a
採用位異或方式將兩個變數數值調換
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
3種方法交換兩個整數(不建立臨時變數)+輸出一組資料最大值+簡單排序+最大公約數
交換兩個整數: 第一種: int a = 6; int b = 8; int t = 0; t = a; a = b; b = t; printf("a = %d b = %d\n", a, b); 後兩種不建立臨時變數 第二種: int a = 6; int
c語言 用指標交換兩個整數附記憶體圖
// Pointer.cpp : 定義控制檯應用程式的入口點。 // !!!!!!VS2015中編輯的 #include “stdafx.h” void swap1(int *x, int *y); void swap2(int *x, int *y); int main() { int
交換兩個整數
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int a, b, c; printf("輸入2個數:\n"); scanf("%d%d", &
如何使用指標形參交換兩個整數的值(詳解)
函式內部通過解引用操作改變指標所指的內容 程式碼塊 #include <iostream> using namespace std; int swap(int *a,int *b); int main() { int *p,*q;
不借助第三個變數交換兩個整數
假設兩個數x和y,則有: 方法1,算術運算(加減): x=x+y; //x暫存兩數之和 y=x-y; //y為兩數之和減去y,即原來的x x=x-y; //x為兩數之和減去現在的y(原來的x),變成原來的y 方法2,邏輯運算(異或):
使用指標形參交換兩個整數的值
樓主是個小白,C++Primer看到第六章,做練習的時候遇到了點小問題,解決了以後到這裡來跟大家分享一下。 題目是要求使用指正形參交換兩個整數的值。 我心想,這還不簡單,恩,開始動手了。 #include<iostream> #include&
C語言中交換兩個整數的值之傳值呼叫和傳址呼叫
在C語言中,一說到交換兩個整數的值,大家第一反應可能是這樣的程式碼。定義一個第三方變數來輔助交換。 #include<stdio.h> int main() { int n
C語言實驗——交換兩個整數的值(順序結構)
Problem Description 交換兩個變數的值,由終端輸入兩個整數給變數x、y,然後交換x和y的值後,輸出x和y。 Input 從鍵盤輸入兩個整數變數x和y; Output 在交換x、y的值後將x和y輸出! Example Input 4 6
交換兩個整數的三種方法
交換a和b ————————————————————————— 第一種 temp = a; a = b; b = temp; 缺點: 建立臨時變數,浪費資源。 相對來說以
《程式設計之美 》2.1 位運算實現—交換兩個整數、求和、整數的二進位制表達中1的個數
序 能否利用位運算高效的實現部分演算法是面試中的常見考題,現在講該部分總結如下。 一、不用額外變數交換兩個整數的值 void exchange(int &a , int &b) {