2017-02-12 63 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