簡體   English   中英

python中任意位整數的奇偶校驗

[英]Parity of integer with arbitrary bits in python

許多解決方案建議使用帶有右移的異或,如下所述https://www.geeksforgeeks.org/finding-the-parity-of-a-number-efficiently/

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 = 7
print(len(bin(i)) - 2)

關於如何使用 xor 和右移任意位數計算奇偶校驗的任何建議?

您可以使用循環來動態更改奇偶校驗的長度:

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那么多操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM