常用的运算简写小技巧

一.两个数组下标值arr[a],arr[b]交换

1.常规:

    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;

运算图

说明:不推荐异或运算做交换两数,原因:https://www.runoob.com/w3cnote/c-swap-data.html

二.求两个数的平均值

1.常规:

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】

你可能感兴趣的:(常用的运算简写小技巧)