非二进制基数 XOR 函数的真值 table
Truth table for XOR function for non binary bases
我知道两个位 A 和 B 的基数 2 的 XOR 运算符是 (A+B)%2。换句话说,它是加法模 2。
如果我想在三元系统(基数 3)中计算异或运算的真值 table,它与加法模 3 相同吗?
例如:在基数为 3 的系统中,2 XOR 2 = 1(因为 (2+2)%3 = 1)吗?
我读到这个 link,它表明 3 进制系统中的 2 XOR 2 是 2,但我无法理解其背后的公式?
一般来说,对于任何基数 'x',该基数的异或运算 - 加法是否对 x 取模?
嗯,XOR 代表 eXclusive OR,它是一个逻辑运算。而这个操作只定义在二进制逻辑中。在您的 link 中,作者定义了完全不同的运算符,它与二进制基数的 XOR 相同。对于大于 2 的基数,您可以将其称为 "extension" 异或运算。但是正如您在问题中提到的,有多种方法可以进行此扩展。并且每种方式都会保留 "original" XOR 的某些属性并丢失其他一些属性。例如,您可以坚持观察
a ⊕ b = (a + b) mod 2
在这种情况下,您对基数 3 的 "extended XOR" 将对输入 2、2 产生输出 1。但是此 XOR3 将不再满足适用于标准 XOR 的其他方程式,例如这些:
a ⊕ b ⊕ b = a
a ⊕ b ⊕ a = b
如果您选择 "save" 那些,您将从 link 获得操作。你也可以保留一些不同的属性异或,比如
a ⊕ a = 0
并得到另一个不同于前两个的操作。
所以简短的回答是:短语 "XOR function for non binary bases" 没有任何意义。 XOR 运算符仅在二进制逻辑中定义。如果你想为非二进制基数或非整数或复数或其他任何东西扩展它,你可以这样做并定义一些具有任何行为和任何你想要的 "truth table" 的扩展函数。但是这个扩展将不再是 XOR 函数。
虽然我不知道 XOR 在技术上是在更高的基数中定义的,但 XOR 的属性可以在更高的基数中维护,因此:
a ⊕ b ⊕ b = a
a ⊕ b ⊕ a = b
如博客 post 所示,使用 (base - (a + b) % base) % base
有效。您缺少的部分是 base 的第一个实例。在以 3 为基数的 2 ⊕ 2 的示例中,我们得到 (3 - (2 + 2) % 3) % 3)
,它确实给出了 2。此公式仅适用于单个数字。如果你想扩展到多个数字,你可以对每对数字使用相同的公式,就像二进制中的标准异或按位一样。
例如,当每对数字(即百位、十位、个位)的 运行 为 10 进制时,185 ⊕ 42 给出:
(10 - (1 + 0) % 10) % 10 => 9
(10 - (8 + 4) % 10) % 10 => 8
(10 - (5 + 2) % 10) % 10 => 3
或者放在一起就是983。如果你 运行 983 ⊕ 145,你会发现结果是 85。
我知道两个位 A 和 B 的基数 2 的 XOR 运算符是 (A+B)%2。换句话说,它是加法模 2。
如果我想在三元系统(基数 3)中计算异或运算的真值 table,它与加法模 3 相同吗? 例如:在基数为 3 的系统中,2 XOR 2 = 1(因为 (2+2)%3 = 1)吗?
我读到这个 link,它表明 3 进制系统中的 2 XOR 2 是 2,但我无法理解其背后的公式?
一般来说,对于任何基数 'x',该基数的异或运算 - 加法是否对 x 取模?
嗯,XOR 代表 eXclusive OR,它是一个逻辑运算。而这个操作只定义在二进制逻辑中。在您的 link 中,作者定义了完全不同的运算符,它与二进制基数的 XOR 相同。对于大于 2 的基数,您可以将其称为 "extension" 异或运算。但是正如您在问题中提到的,有多种方法可以进行此扩展。并且每种方式都会保留 "original" XOR 的某些属性并丢失其他一些属性。例如,您可以坚持观察
a ⊕ b = (a + b) mod 2
在这种情况下,您对基数 3 的 "extended XOR" 将对输入 2、2 产生输出 1。但是此 XOR3 将不再满足适用于标准 XOR 的其他方程式,例如这些:
a ⊕ b ⊕ b = a
a ⊕ b ⊕ a = b
如果您选择 "save" 那些,您将从 link 获得操作。你也可以保留一些不同的属性异或,比如
a ⊕ a = 0
并得到另一个不同于前两个的操作。
所以简短的回答是:短语 "XOR function for non binary bases" 没有任何意义。 XOR 运算符仅在二进制逻辑中定义。如果你想为非二进制基数或非整数或复数或其他任何东西扩展它,你可以这样做并定义一些具有任何行为和任何你想要的 "truth table" 的扩展函数。但是这个扩展将不再是 XOR 函数。
虽然我不知道 XOR 在技术上是在更高的基数中定义的,但 XOR 的属性可以在更高的基数中维护,因此:
a ⊕ b ⊕ b = a
a ⊕ b ⊕ a = b
如博客 post 所示,使用 (base - (a + b) % base) % base
有效。您缺少的部分是 base 的第一个实例。在以 3 为基数的 2 ⊕ 2 的示例中,我们得到 (3 - (2 + 2) % 3) % 3)
,它确实给出了 2。此公式仅适用于单个数字。如果你想扩展到多个数字,你可以对每对数字使用相同的公式,就像二进制中的标准异或按位一样。
例如,当每对数字(即百位、十位、个位)的 运行 为 10 进制时,185 ⊕ 42 给出:
(10 - (1 + 0) % 10) % 10 => 9
(10 - (8 + 4) % 10) % 10 => 8
(10 - (5 + 2) % 10) % 10 => 3
或者放在一起就是983。如果你 运行 983 ⊕ 145,你会发现结果是 85。