也许这对每个人来说都是显而易见的,但有人可以解释 XOR(或 Exclusive-OR)的名字来自哪里吗?独家这个词的真正含义是什么?这并不重要,但它从早上起就一直萦绕在我的脑海中。
OR:
0 0 0
0 1 1
1 0 1
1 1 1
XOR:
0 0 0
0 1 1
1 0 1
1 1 0
它是“输入 1,1 的唯一 0”、“OR 的特殊版本”还是其他什么?
也许这对每个人来说都是显而易见的,但有人可以解释 XOR(或 Exclusive-OR)的名字来自哪里吗?独家这个词的真正含义是什么?这并不重要,但它从早上起就一直萦绕在我的脑海中。
OR:
0 0 0
0 1 1
1 0 1
1 1 1
XOR:
0 0 0
0 1 1
1 0 1
1 1 0
它是“输入 1,1 的唯一 0”、“OR 的特殊版本”还是其他什么?
这是孩子们理解为 OR
你可以吃巧克力或者你可以吃冰淇淋
但是程序员会认为这两者兼而有之!
问:“你想要茶还是咖啡”
烦人的程序员回答 = 是
XOR 是“异或”,因为如果两个值互斥,即它们都不同,它只返回“真”值 1。
根据 Knuth 在 Vol。TAOCP 的 4A,George Boole “……写了 x+y 来代表析取,但他煞费苦心地从不使用这个符号,除非 x 和 y 互斥(不是都是 1)。如有必要,他写了 x+(1- x)y 以确保析取的结果永远不会是 2。”
XOR 是进位丢失的加法。
在两个操作数必须互斥(换句话说,不同)的意义上,它是互斥的。
这来自集合论。假设您有两个集合 A 和 B,以及一个可能在也可能不在这些集合中的元素。如果元素在集合 A 中,则第一个布尔输入为真。如果元素在集合 B 中,则第二个布尔输入为真。
如果元素对一个集合是“独占的”(如与另一个集合“不共享”),则 XOR 运算符将返回 true。来自维基百科的插图:
XOR 中的 Exclusive 意味着它所说的 - 必须排除两者之一。也就是说,一个或另一个。两者都没有,也没有——只有一个。至少我是这么理解的:)
它是排他性的,就像“只有一个”一样。换句话说,它是“两者之一,但不是两者”。
我今天读了一个很好的“简单英语”示例:
例如,考虑一下英语句子“你在星期二之前付钱给我,否则我会起诉”。如果那个“或”是逻辑连接词,那么当你在星期二之前付钱给我或者我起诉你时,这句话就成立了;所以你可以在星期一付钱给我,我仍然可以起诉你。但是“或”的这种特殊用法通常会被理解为要么你在星期二之前付钱给我,我不起诉你,要么你在星期二之前不给我钱,我起诉你——所谓的“独家或”。
Hugh Darwen,“关系数据库理论导论”,第 76 页。