说我们有这个号码101001110110010
这是使用XOR计算奇偶校验的正确方法:
10 10 01 11 01 10 01 0
1 1 1 0 1 1 1 0
0 1 0
1
1 1
的 0
答案 0 :(得分:1)
作为逐个XORing每个位的替代方法,我们可以依靠计算机的能力将更大的整数XOR组合在一起。由两半H和L组成的大数的奇偶校验可以被计算为H^L
的奇偶校验。该定义给出了一个(尾部)递归算法,该算法将每一步的数量减半,因此具有对数调用深度。它可以迭代实现,例如:
def parity(x):
shiftamount = 1
while x >> shiftamount:
x ^= x >> shiftamount
shiftamount <<= 1
return x & 1
答案 1 :(得分:0)
我最后回答了自己的问题, 这个方法实际上是正确的,我在python中的线性密码分析实现中使用它。
基本上,要使用XOR计算一个数字的奇偶校验,只需取两个2位并将它们放在一起,继续这样做,直到你留下一个数字。
如果你需要它,这是实现
def FindParity(value):
parity = 0
while value > 0:
extractedValue = value % 2
value //= 2
parity = parity ^ extractedValue
return parity
这个函数只需要一个数字,并在我的问题中手动完成我的工作。