让我说我有以下变量 数据= 0xab12cd30 我想得到超过32位的xor(例如在verilog ^ data中)
例如(给出8位示例)
data = 0x11 - >结果应为0
data = 0x10 - >结果是1
data = 0x21 - >结果应为0
data = 0x23 - >结果应为1
最简单的方法是什么? 使用Python 2.4.3
答案 0 :(得分:2)
最简单的?也许这个:
bin(data).count('1') % 2
演示:
>>> for data in 0x11, 0x10, 0x21, 0x23:
print bin(data).count('1') % 2
0
1
0
1
修改:如果使用的是一个没有bin
的非常老的Python,那么这里就是一个自己动手的解决方案:
for data in 0x11, 0x10, 0x21, 0x23:
xor = 0
while data:
xor ^= data & 1
data >>= 1
print xor
编辑2:更快,更棘手的解决方案:
for data in 0x11, 0x10, 0x21, 0x23:
xor = 0
while data:
xor ^= 1
data &= data - 1 # deletes the last 1-bit
print xor