Python 限制变量的大小
我主要从事低级编程,变量的大小受变量类型/寄存器大小的限制 假设我想用Python做几个位级操作,我需要确保当前执行的指令的高位不会影响下一条指令 在Python w/o中,是否有任何技巧可以使用额外的长二进制掩码或浪费性能的库来限制变量的大小 在示例代码中,我使用Python 限制变量的大小,python,python-3.x,Python,Python 3.x,我主要从事低级编程,变量的大小受变量类型/寄存器大小的限制 假设我想用Python做几个位级操作,我需要确保当前执行的指令的高位不会影响下一条指令 在Python w/o中,是否有任何技巧可以使用额外的长二进制掩码或浪费性能的库来限制变量的大小 在示例代码中,我使用0xffffff掩码将x的值限制为32位 def reflect_bits(x): x = (((x & 0x55555555) << 1) | ((x >> 1) & 0x5555555
0xffffff
掩码将x
的值限制为32位
def reflect_bits(x):
x = (((x & 0x55555555) << 1) | ((x >> 1) & 0x55555555)) & 0xFFFFFFFF
x = (((x & 0x33333333) << 2) | ((x >> 2) & 0x33333333)) & 0xFFFFFFFF
x = (((x & 0x0F0F0F0F) << 4) | ((x >> 4) & 0x0F0F0F0F)) & 0xFFFFFFFF
x = ((x << 24) | ((x & 0xFF00) << 8) | ((x >> 8) & 0xFF00) | (x >> 24)) & 0xFFFFFFFF
return x
def反射_位(x):
x=((x&0x555555>1)和0x555555))&0xFFFFFF
x=((x&0x33333333)>2)和0x33333333))&0xFFFFFF
x=((x&0x0F0F)>4)和0x0F0F))&0xFFFFFF
x=((x 8)和0xFF00)|(x>>24))和0xFFFFFF
返回x
我认为没有任何内置功能。您可以在开始时执行x=x&0xffffffffff
,这样中间值就不会溢出。您可能会觉得有帮助。使用它,您可以在Python代码中嵌入C类型。与Python int不同,C风格的int具有预先确定的大小,因此它们在这里的行为可能更容易预测。你可能也会得到提速。