按位左移 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 密集的字符串运算。)
我已经提交了如下所示的代码片段:
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 密集的字符串运算。)