2012-08-28 42 views
3

在這個例子中,我獲得了一個正數,但我需要一個Python中的表達式,其結果與Javascript中的結果相同。Python左移(簽名問題)

怎麼可能陰性結果在Python中獲得?

的Python 2.7

mv = 1732584193 << 5 

結果:

MV = 55442694176

bin(mv)給出0b1100111010001010010001100000001

的Javascript

mv = 1732584193 << 5 

結果:

MV = -391880672

mv.toString(2)-10111010110111001111111100000

+0

像這樣:http://stackoverflow.com/q/1375897/707111 – Ryan

+0

謝謝,我已經閱讀並試圖轉向直接返回的值是功能,具有相同的結果。 – Martin0x777

+0

不要移動從該函數返回的值。 Shift,*然後*應用該功能。你還需要用'0xffffffff'來掩蓋它。 – Ryan

回答

0

你可以使用ctypes的做到這一點:

>>> import ctypes 
>>> mv = ctypes.c_int32(1732584193) 
>>> mv.value <<= 5 
>>> mv 
c_int(-391880672) 
>>> bin(mv.value) 
'-0b10111010110111001111111100000' 
+0

謝謝你jterrace。堅韌已經指出了答案,你的方法是最適合我的腳本。 – Martin0x777