按位左移 Python

Bitwise left shift in Python

我已经提交了如下所示的代码片段:

def shift():
    m = 8
    low = '10100111'
    lw = int(low, 2)
    lw = lw << 1
    l_bin = bin(lw)[2:].zfill(m)

输出 ==> 101001110(9 位)

而所需的输出 ==> 01001110(8 位)

我可以理解右移 lw 变量会导致整数值从 167 移动到 334。但我希望输出是所需的输出。

如果你想模拟一个字节(就像它在 C 中的行为),你必须屏蔽高位:

lw = (lw<<1) & 0xFF

当然,就是如果你一直m设置成8,不然不行。

如果 m 变化,您可以像这样计算(或预先计算)掩码值:

mask_value = 2**m-1
lw=(lw<<1) & mask_value

(所有这些的目的是更喜欢算术运算而不是更 CPU/memory 密集的字符串运算。)