我试图将一个函数从 C 移植到 Python 并使其易于调试,我希望它执行相同的 CPU 字大小限制操作,以便我可以比较中间结果。换句话说,我想要这样的东西:
a = UnsignedBoundedInt(32, 399999)
b = UnsignedBoundedInt(32, 399999)
print(a*b) # prints 1085410049 (159999200001 % 2**32)
实现此目的的最佳方法是什么,以便所有操作(包括按位移位)都可以像 C 中一样工作?
您可以尝试使用ctypes.uint_32
为您绑定结果:
>>> import ctypes
>>> print ctypes.c_uint32(399999 * 399999).value
1085410049
或者你可以使用numpy http://www.numpy.org/的数据类型:
>>> import numpy as np
>>> a = np.uint32(399999)
>>> b = np.uint32(399999)
>>> a * b
__main__:1: RuntimeWarning: overflow encountered in uint_scalars
1085410049
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)