Python左移操作(符号问题)

3
在这个例子中,我得到了一个正数,但我需要在Python中得到与Javascript相同的结果。如何在Python中获得负数结果?(Python 2.7)
mv = 1732584193 << 5

结果:

mv = 55442694176

bin(mv) 的输出为 0b1100111010001010010001100000001

Javascript

mv = 1732584193 << 5

结果:

mv = -391880672

mv.toString(2) 的输出为 -10111010110111001111111100000


像这样:https://dev59.com/rXM_5IYBdhLWcg3wcSt_ - Ry-
谢谢,我已经阅读并尝试直接移动从那些函数直接返回的值,但结果相同。 - Martin0x777
不要移动由该函数返回的值。先移动,然后再应用该函数。您还需要使用 0xffffffff 进行屏蔽。 - Ry-
你是对的,谢谢 minitech - Martin0x777
1个回答

0
你可以使用ctypes来实现这个功能:
>>> import ctypes
>>> mv = ctypes.c_int32(1732584193)
>>> mv.value <<= 5
>>> mv
c_int(-391880672)
>>> bin(mv.value)
'-0b10111010110111001111111100000'

谢谢jterrace。虽然Tough已经指向了答案,但是你的方法是最适合我的脚本的。 - Martin0x777

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接