我该怎么做才能让python使用补码来解释像cd这样的位呢

2024-10-01 13:25:55 发布

您现在位置:Python中文网/ 问答频道 /正文

实际上,我只希望Python和c做同样的事情

例如,在c中:

int num = 1 << 31; // num's bits should be 0x8000 0000.

printf("%d\n", num); // the print is -2147483648, because of complememnt.

但是,在Python中:

>>> num = 1 << 31
>>> print num
2147483648
>>> print int.bit_length(num)
32
>>> print '{0:b}'.format(num)
10000000000000000000000000000000

Python似乎使用了真正的代码来解释num,我该怎么做才能让Python像c一样使用补码来解释位呢


Tags: oftheisbitbe事情lengthnum
1条回答
网友
1楼 · 发布于 2024-10-01 13:25:55

使用ctypes模块可以得到您想要的结果:

    import ctypes
    ctypes.c_int(1 << 31)

我希望这足以满足您接下来对这个整数所做的操作。Python比带整数的C更宽容:当需要保存操作结果时,它甚至通过升级到更大的表示(例如int到long)来避免溢出。很高兴有更好的抽象,但会复杂的事情时,去较低的水平

相关问题 更多 >