2017-02-12 81 views
0

我发现'&'在python意味着'和'基于位表达式的操作。最近,我发现了一个非常聪明的代码,其中一行就像'i & -i',其中i是一个整数。如何理解'i & -i'的结果。另外,python如何处理用于位操作的负整数'-i'?如何在Python中理解i&-i?在Python中的位操作

+1

负数是在[补](https://en.wikipedia.org/wiki/Two's_complement)与领先者无限多的(就像正数有无数的前导零)。 – Kevin

+1

是的,位操作非常重要,因为这就是你的CPU做数学的方式! [非常有趣的阅读](https://graphics.stanford.edu/~seander/bithacks.html)以及[this](https://www.hackerearth.com/practice/notes/bit-manipulation/) 。 – ForceBru

+2

本质上是http://stackoverflow.com/questions/41969429/why-the-bit-operation-i-i-equals-to-rightmost-bit的副本,除了Python整数不是固定宽度的轻微警告外。 – user2357112

回答

0

“i & -i” - 这是清除所有位“1”,但最后一个重要的一个。 例如:

I = 10(十进制)= 000010 0(BIN)

我& -i将000000 0(箱)= 2(分解)

按数学术语,“i & -i”返回最大2^N,它是“i”的分隔符。

更多的例子:

i(dec) i(bin)  i&-i 
1   1  1 
5   101  1 
8   1000  1000 
12   1100  0100