a异或b异等于什么
a^(b^c)怎么算?
a^(b^c)怎么算?
^表示异或,就是对应的bit如果不相同,则结果为1a^b的含义就是把a和b转换成2进制的bit,然后按位异或例如:3^500000011^00000101000001106
异或有什么用?
大家好我是创业熊哥,我来回答异或作用之前先来了解一下什么叫异或:异或英文为exclusive OR,或缩写成xor,异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b (?a ∧ b) ∨ (a ∧?b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
1.异或的作用如下:
在计算机中普遍运用,异或(xor)的逻辑符号一般用xor,也有用⊕的:
真⊕假真
假⊕真真
假⊕假假
真⊕真假
或者为:
True ⊕ False True
False ⊕ True True
False ⊕ False False
True ⊕ True False
2.起内存保护作用。比如Microsoft Visual Studio你加了如下开关/GS会自动加上如上类似的操作。我们可以认为是一种安全cookie比如如下:char buffer[5]strcpy(buffer, 0123456)会有问题。但是有了/GS这种功能后会自动加上如下的代码:mov eax, dword ptr ds:___sec_cookie 某个固定的值xor eax, ebp 调整指针mov [ebp SOMETHING], eax 保存处理过的结果这样就不容易出现安全漏洞。比如在以前我们可以利用strcpy给代码注入一段可执行代码,现在就杜绝掉了。具体可以查找visual studio的/GS开关。
希望我的回答能帮到你,谢谢!