2016-12-29 12 views
1

Так что я попытался следующее в оболочке Python:Беспорядок на дополнения до двух комплимента в питона

>>> x = -1 
>>> x < 0 
True 
>>> x = -x 
>>> x ^= 0xffffffff 
>>> x += 1 
>>> x < 0 
False 

Так что, если у меня есть номер тот изначально отрицательный, и я отрицать его и возьмите двоек комплимент, не должен он быть отрицательным еще раз? почему python считает, что число положительно?

+0

использовать 'Print()', чтобы увидеть, что у вас есть в 'x' -' int' может содержать большие числа - больше, чем '0xffffffff', поэтому вы не отрицаете его. – furas

+0

Возможно, вы захотите проверить https://wiki.python.org/moin/BitwiseOperators – niemmi

ответ

0

Вы можете проверить с вашим кодом с помощью Print, Вы делаете положительный перед тем,

>>> x=-1 
>>> x<0 
True 
>>> x=-x 
>>> x 
1 
>>> x^=0xffffffff 
>>> x 
4294967294 
>>> x+=1 
>>> x 
4294967295 
>>> x<0 
False 

Для получения более подробной информации, просто зайдите сюда https://wiki.python.org/moin/BitwiseOperators