非二进制碱基的XOR函数的真值表

时间:2017-03-04 23:27:29

标签: xor base ternary

我知道基数2中的两个位A和B的XOR运算符是(A + B)%2。换句话说,它是模2的加法。

如果我想在三元系统(基数3)中计算XOR运算的真值表,它是否与加法模3相同? 例如:在基础3系统中,2 XOR 2 = 1(因为(2 + 2)%3 = 1)?

我读了这个link,表明基础3系统中的2 XOR 2是2,我不能理解背后的公式?

一般来说,对于任何基数' x是该基数的XOR运算 - 加法模x?

2 个答案:

答案 0 :(得分:0)

嗯,XOR代表e X 集群 OR ,这是一个逻辑操作。此操作仅在二进制逻辑中定义。在您的链接中,作者定义了完全不同的运算符,其作用与二进制基数的XOR相同。对于大于2的基数,您可以将其称为XOR运算的“扩展”。但正如您在问题中提到的,有多种方法可以执行此扩展。并且每种方式都会保留“原始”异或的一些属性,而另一些则松散。例如,你可以坚持观察

a⊕b =(a + b) mod 2

在这种情况下,对于基数3的“扩展XOR”将为输入2,2产生输出1.但是该XOR3将不再满足用于标准XOR的其他方程,例如,这些:

a⊕b⊕b = a

a⊕b⊕a = b

如果您选择“保存”这些,您将从链接中获取操作。您还可以保留XOR的一些不同属性,比如说

a⊕a = 0

并获得与前两个不同的另一个操作。

所以简短的回答是:短语“非二元碱基的XOR函数”没有任何意义。 XOR运算符仅在二进制逻辑中定义。如果你想扩展它为非二进制基数或非整数或复数或其他什么,你可以做到并定义一些扩展函数与任何行为和你想要的任何“真值表”。但是这个扩展将不再是XOR功能。

答案 1 :(得分:0)

虽然我不知道XOR在技术上是用较高的基数定义的,但是XOR的属性可以用较高的基数来维护,例如:

a⊕b⊕b = a

a⊕b⊕a = b

如博客文章所示,使用 woo: { api: { host: 'localhost/wordpress', protocol: 'http', auth: { consumer_key: "ck_c2bb899b85976683687d745a207cd2f8424d", consumer_secret: "cs_40f58a37c6408843dd15b22295db633b38", version: "v3" } } }, db: { host: 'localhost', port: 9200, driver: 'elasticsearch', url: process.env.DATABASE_URL || 'http://localhost:9200', indexName: process.env.INDEX_NAME || 'vue_storefront_catalog' }, 是可行的。您缺少的部分是 base 的第一个实例。在以3为底的2⊕2的示例中,我们得到(base - (a + b) % base) % base,它确实给出了2。此公式仅适用于一位数字。如果要扩展为多个数字,则对每对数字使用相同的公式,就像二进制中的标准XOR按位运算一样。

例如,以10为底的每对数字(即几百,十,一)运行时,以185⊕42为单位:

(3 - (2 + 2) % 3) % 3)

(10 - (1 + 0) % 10) % 10 => 9

(10 - (8 + 4) % 10) % 10 => 8

或983当放在一起时。如果您以983⊕145的价格运行,则会发现结果为85。