簡體   English   中英

Python3邏輯左移

[英]Python3 logical left shift

默認情況下,Python ( << ) 中的“左移”操作充當算術移位,並將 0 位附加到表示 int 的位的末尾。

例如:100 << 1 返回 200

在二進制表示中,我們可以看到 100 = 0b1100100(7 位)和 100 << 1 = 0b11001000(8 位)

在 Python 3 中,執行邏輯左移的最佳方法是什么,其中位數保持不變,但值向左移?

例如: 100 << 1 將返回 72

在二進制表示中 100 = 0b1100100 和 100 << 1 = 0b1001000 我們保留了相同的 7 位,但只是向左移動並在末尾附加了一個 0。

您可以使用int.bitlength來獲取表示數字所需的位數, and使用(1 << bitlength) - 1將結果限制為那么多位:

def lls_const_bits(n):
    return (n << 1) & ((1 << n.bit_length()) - 1)

print(lls_const_bits(100))

Output:

72

如果要將 output 限制為固定位數b ,則需要使用(1 << b) - 1進行屏蔽:

def lls_const_bits(n, b):
    return (n << 1) & ((1 << b) - 1)

print(lls_const_bits(100, 7))

Output:

72

暫無
暫無

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

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