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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java怎么不增加临时变量交换值

發布時間:2025/5/22 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java怎么不增加临时变量交换值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思路
1、利用加法實現功能,原理是先把數字合并起來賦值給其中一個數字,然后分別按順序減去兩個數字。(容易導致數據溢出,并不完美)

#include <stdio.h> int main() {int a = 5;int b = 10;a = a + b;//把a和b加起來賦值給ab = a - b;//b和a交換就等于賦值的這個數字減去ba = a - b;//a和b交換就等于賦值的這個數字減去上一步賦值過的bprintf("a=%d,b=%d\n", a, b);return 0; }

2、利用乘法實現功能,原理和加法類似,先把數字乘起來賦值給另一個數字,然后分別按順序除兩個數字。(容易導致數據溢出,并不完美)

#include <stdio.h> int main() {int a = 5;int b = 10;a = a * b;//a和b乘起來賦值給ab = a / b;//給這個新的數字除以b得到a的值a = a / b;///給這個新的數字除以a的值得到b的值printf("a=%d,b=%d\n", a, b);return 0; }

3、按位異或實現(利用了集合的思想,完美解決這個問題)
理解按位異或的意義
對兩個二進制數異或表示,兩個二進制數字相同則為0,不同則為1,
0^0=0
1^0=0
0^1=1
1^1=0
對二進制代碼按位異或后,有三個特點:
1、0異或任何數=任何數
2、1異或任何數 = 任何數取反
3、任何數異或其本身=0
按位異或常用于
(1)將二進制數字某幾個特定的位置翻轉,只需要將該數字與一個特定位置為1,其他位置為0的數字按位異或。例如:
10011011第一第二位翻轉,則將它和00000011按位異或,得到10011000
(2)實現兩個值交換,利用按位異或的性質,代碼如下

#include <stdio.h> int main() {int a = 5;int b = 10;a = a ^ b;//將他們的二進制數按位異或賦值給ab = a ^ b;//a按位異或后再和b按位異或得到的就是a,賦值給ba = a ^ b;//a按位異或后再和得到a的值得b按位異或,賦值給aprintf("a=%d,b=%d\n", a, b); }

代碼

public class Exchange {public static int[] exchangeAB(int[] AB) {AB[0] = AB[0] ^ AB[1];AB[1] = AB[0] ^ AB[1];AB[0] = AB[0] ^ AB[1];return AB;}public static void main(String[] args) {int[] AB = {2, 3};System.out.println(AB[0] + " " + AB[1]);exchangeAB(AB);System.out.println(AB[0] + " " + AB[1]);} }

總結

以上是生活随笔為你收集整理的java怎么不增加临时变量交换值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。