常用的运算简写小技巧

一.两个数组下标值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】
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容