为了账号安全,请及时绑定邮箱和手机立即绑定

python中整数与任意位的奇偶校验

python中整数与任意位的奇偶校验

蓝山帝景 2023-08-08 17:25:23
许多解决方案建议使用右移异或,如此处所述 def findParity(x):    x = x ^ (x >> 16);     x = x ^ (x >> 8);     x = x ^ (x >> 4);    x = x ^ (x >> 2);     x = x ^ (x >> 1);     return x & 1; 但他们假设 32 或 64 位或某个 2^n 位整数。在 python 中,整数可以有任意位数。例如 i = 7,只有 3 位。i = 7print(len(bin(i)) - 2)关于如何使用异或和右移计算任意位数的奇偶校验有什么建议吗?
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

您可以使用循环来动态更改奇偶校验的长度:


def parity(num):

    length = math.ceil(math.log2(math.ceil(math.log2(num)+1)))

    for i in range(length-1, -1, -1):

        print(2**i)

        num^=(num >> (2**i))

    return num&1

您将需要使用log两次,因为您首先必须找到数字的长度,然后您需要log那么多操作。


查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信