Python中的按位左移

Python中的按位左移,python,python-2.7,bit-manipulation,bit-shift,Python,Python 2.7,Bit Manipulation,Bit Shift,我已提交一段代码片段,如下所示: def shift(): m = 8 low = '10100111' lw = int(low, 2) lw = lw << 1 l_bin = bin(lw)[2:].zfill(m) def shift(): m=8 低='10100111' lw=int(低,2) lw=lw 101001110(9位) 而所需输出==>01001110(8位) 我可以理解将lw变量右移会导致整数值从167移到334。

我已提交一段代码片段,如下所示:

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

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


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

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


(所有这一切的目的是更喜欢算术运算,而不是CPU/内存更密集的字符串运算。)

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


(所有这一切的目的都是希望算术运算比字符串运算更占用CPU/内存。)

那么,为什么不将其切成8个字符呢
l_-bin=l_-bin[-8:][/code>@绘图切片是一个选项,但会增加代码长度注意,如果您担心代码长度,可以从二进制文字开始:
lw=0b10100111
@juanpa.arrivillaga低变量不在原始代码中…我在调试代码中的一个错误,其中lw向左移动了1位,将位表示常量保持在“m”指定位,为什么不将其切成8个字符
l_-bin=l_-bin[-8:][/code>@绘图切片是一个选项,但会增加代码长度注意,如果您担心代码长度,可以从二进制文字开始:
lw=0b10100111
@juanpa.arrivillaga低变量不在原始代码中…我在调试代码中的一个错误,其中lw向左移动了1位,将位表示常量保持在右侧的指定位“m”。由问题暗示,但不清楚。编辑了我的答案,没错。由问题暗示,但不清楚。编辑了我的答案。
lw = (lw<<1) & 0xFF
mask_value = 2**m-1
lw=(lw<<1) & mask_value