本文最后更新于 1394 天前,其中的信息可能已经有所发展或是发生改变。
异或:
1.二进制运算时,相同为0,不同为1
2.整数自己和自己异或时得0
3.任意整数与0异或时得整数本身
从而实现两变量在无中间变量的情况下的交换(int):
a=a^b;
b=a^b;
a=a^b;
x & -x:
保留二进制数最后一位出现1的位置,其余位置0;
具体证明可用奇偶数分别验证;
x&(x-1):
消除二进制数最后一位出现1的位置,其余位不变;
1.二进制运算时,相同为0,不同为1
2.整数自己和自己异或时得0
3.任意整数与0异或时得整数本身
从而实现两变量在无中间变量的情况下的交换(int):
a=a^b;
b=a^b;
a=a^b;
保留二进制数最后一位出现1的位置,其余位置0;
具体证明可用奇偶数分别验证;
消除二进制数最后一位出现1的位置,其余位不变;