我已提交了如下所示的代码段:
def shift():
m=8
low='10100111'
lw=int(low,2)
lw=lw<<1
l_bin=bin(lw)[2:].zfill(m)
输出==&gt; 101001110(9位)
,而期望的输出==&gt; 01001110(8位)
我能理解正确移动lw会导致整数值从167变为334.但我希望输出成为所需的输出。
答案 0 :(得分:2)
如果要模拟一个字节,就必须屏蔽高位(就像在C中表现一样)
lw=(lw<<1) & 0xFF
当然,也就是说,如果您将m
设置为8,否则它将无效。
如果m
变化,您可以像这样计算(或预先计算)掩码值:
mask_value = 2**m-1
lw=(lw<<1) & mask_value
(所有这一切的目的是更喜欢算术运算来串行更多CPU /内存的字符串操作)