Python中奇怪的位操作

时间:2015-02-17 05:48:35

标签: python-2.7 bit-manipulation

以下是在Python 2.7.2解释器上运行bin内置函数的结果:

   bin(5)
=> '0b101'
   bin(-5)
=> '-0b101'
   bin(5&-5)
=> '0b1'

使用无限位和2的补码:

+5 = 0000...0101 -5 = 1111...1101

那么为什么5&-5 = 0000...1

不应该是0000...101吗?对此有何解释?

2 个答案:

答案 0 :(得分:2)

你做错了你的两个补充。它实际上是:1111...1011

所以...1011 & ...0101 = 1。

答案 1 :(得分:2)

实际上2的-5的补码是111.....1011 现在,如果你有点明智和这两个

  000...0101
& 111...1011
  ----------
  000...0001