一.兩個數(shù)組下標值arr[a],arr[b]交換
1.常規(guī):
private static void swap1(int[] arr,int a,int b){
int temp = arr[a];
arr[a] = arr[b];
arr[b] = arr[a];
}
2.基于二進制異或運算^
private static void swap2(int[] arr,int a,int b){
arr[a] ^= arr[b];
arr[b] ^= arr[a];
arr[a] ^= arr[b];
}
原理:
基于運算器得到呵燕,運算速度很快。
例如arr[1]=9,arr[2]=20;
說明:不推薦異或運算做交換兩數(shù),原因:https://www.runoob.com/w3cnote/c-swap-data.html
二.求兩個數(shù)的平均值
1.常規(guī):
int NUM_A = 18 0000 0000
int NUM_B = 16 0000 3434
int MID_NUM = (NUM_A+NUM_B)/2
報錯喷众,超出int的存儲空間
2憔四,基于有無符號毁腿,右移胯究,可以避免內存溢出硅则。
int NUM_A = 18 0000 0000
int NUM_B = 16 0000 3434
int MID_NUM =NUM_B +((NUM_A-NUM_B)>>1) 【a>>1就是a除以2;a>>2就是a除以2^2】