异或
傻逼 博主在刚学的时候,看到别人的代码一堆异或
死的和任何一位萌新一样惨
而且,耂是背了忘,忘了背,背了又忘
所以,想写篇博客,骗点赞 加深印象
异或:
符号:
⊕ , xor , ^ , eor ,ex-or 都指异或
概念:
一种二进制的位运算
针对一个数转化成二进制后的数的 每一位 进行 运算
法则:
这是一个全靠背(博主感觉)的东西
0^0=0
1^1=0
1^0=1
0^1=1
就是相同为假,不同为真
几个特点和功能:
1. 0异或任何数=任何数本身
2. 1异或任何数=任何数取反(针对每一二进制位取反)这一点博主在某些大佬的程序中看懵了好几次,现在自己也喜欢这样写,让某些 陈琦(my gay friend) 刚学的孩子 看不懂
3. 任何数异或她自己=把她自己变成0
4. 使一个数某些特定的位翻转
例如对二进制数 11001 的第2位和第3位翻转,我们则可以将这个数与 00110 进行按位异或运算
11001^00110=11111
这很重要:一个数与另一个数进行位运算时,不足的位 补零 上去
5. 交换两个值,而不是用临时变量
这可以用来让陈琦看不懂
代码:cpp
交换 A B
void change(int& a,int& b)
{
a=a^b;
b=b^a;
a=a^b;
}
- 似乎上面数字没对齐
没事,我就是来坑强迫症的
判断两个数是否相等,但是这种较快,较装B
代码:cpp
bool check(int a,int b)
{
return ((a^b==0));
}
//return 1:相等
//return 0:不等
好了 ,介绍完了,可以点个赞吗
谢谢阅读
#点赞是我写BUG的动力!!!