擅长:python、mysql、java
<p>在Python中,一个很好的方法是使用按位操作。例如,对于32位值:</p>
<pre><code>def s32(value):
return -(value & 0x80000000) | (value & 0x7fffffff)
</code></pre>
<p>将此应用于您的价值观:</p>
<pre><code>>>> s32(a)
398969966
>>> s32(b)
-1051154348
</code></pre>
<p>此函数的作用是对值进行符号扩展,以便用正确的符号和值正确解释它。</p>
<p>Python有点棘手,因为它使用任意精度的整数,所以负数被视为一个前导1位的无限序列。例如:</p>
<pre><code>>>> bin(-42 & 0xff)
'0b11010110'
>>> bin(-42 & 0xffff)
'0b1111111111010110'
>>> bin(-42 & 0xffffffff)
'0b11111111111111111111111111010110'
</code></pre>