Python 中的按位运算
我正在寻找有关如何在 python 中进行按位数学运算的建议。
我遇到的主要问题是python的按位运算符具有无限精度,这意味着-1实际上是“111.......111”。那不是我想要的。我想模拟真实的硬件,它有一些固定的精度,比如 32 位。
这里有一些陷阱:
1) -n 应该返回一个 32 位 2 的补码数(这可以通过取无限精度 -n 的低 32 位轻松实现)
2) n >>> 3,应该是一个32位数字的算术移位,这意味着如果第31位是“1”,那么移位3后第31:28位应该是“1”。
I'm looking for recommendations on how to do bitwise math in python.
The main problem I have is that python's bitwise operators have infinite precision, which means that -1 is really "111.......111". That's not what I want. I want to emulate real hardware which will have some fixed precision, say 32 bits.
Here are some gotchas:
1) -n should return a 32 bit 2's complement number ( this is easily achieved by taking the lower 32 bits of the infinite precision -n )
2) n >> 3, should be an arithmetic shift of a 32 bit number, which means if bit 31 is '1', then bits 31:28 should be '1' after the shift by 3.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用numpy,它内置于 int32 类型等等。
You could use numpy, it has built in int32 types and much more.
您始终可以添加
& ((1<<32) - 1)
掩码,在执行任何操作之前将数量限制为 32 位,例如You could always add a
& ((1<<32) - 1)
mask to limit the number to 32-bits before performing any operation, e.g.