【问题标题】:Python left shift (sign issue)Python左移(符号问题)
【发布时间】:2012-08-23 05:36:10
【问题描述】:

在这个例子中,我得到一个正数,但我需要一个 Python 中的表达式,它给出与 Javascript 中相同的结果。

如何在 Python 中获得否定结果?

Python 2.7

mv = 1732584193 << 5

结果:

mv = 55442694176

bin(mv)0b1100111010001010010001100000001

Javascript

mv = 1732584193 << 5

结果:

mv = -391880672

mv.toString(2)-10111010110111001111111100000

【问题讨论】:

  • 谢谢,我已经阅读并尝试移动从该函数直接返回的值,结果相同。
  • 不要移动从该函数返回的值。 Shift,然后应用该功能。您还需要使用0xffffffff 对其进行屏蔽。
  • 你是对的,感谢 minitech

标签: javascript python integer signed bit-shift


【解决方案1】:

您可以使用 ctypes 来执行此操作:

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

【讨论】:

  • 谢谢 jterrace。强硬已经指出了答案,您的方法最适合我的脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
相关资源
最近更新 更多