目 录CONTENT

文章目录

位运算技巧总结

小磊
2023-04-25 / 0 评论 / 0 点赞 / 448 阅读 / 193 字 / 正在检测是否收录...

利用异或运算交换数组位置

注意:交换时下角标不能相同

异或运算性质:异或运算可以看作无进位相加

异或运算三大性质:
1.0 ^ N = N ; N ^ N = 0
2.满足交换律与结合率
3.任意个数输入的异或运算的结果与异或顺序无关

private static void swap(int[] arr, int i, int j) {
        arr[i] = arr[i] ^ arr[j];
        arr[j] = arr[i] ^ arr[j];//arr[j] = arr[i] ^ arr[j] = arr[i] ^ arr[j] ^ arr[j] = arr[i]
        arr[i] = arr[i] ^ arr[j];//arr[i] = arr[i] ^ arr[j] = arr[i] ^ arr[j] ^ arr[i] = arr[j]
    }

返回某个数二进制表示下最右侧的1

int rigntOne = eor & (~eor + 1);//使eor中最右面的一位1保持为1,其余为次皆为0
0

评论区