解釋代碼((n & (n-1))== 0)的含義

思路:code

    初步查看很難一眼分析出表達式是什麼含義,咱們不妨舉例分析一下,假設 n = 5,二進制表示爲101,那麼 n-1 = 4,二進制表示爲100, 5 & 4 = 101 & 100 = 100 = 4 != 0,下面咱們來看更多的例子:class

 5 & 4 = 101 & 100 = 4
 6 & 5 = 110 & 101 = 4
 7 & 6 = 111 & 110 = 6
 8 & 7 = 1000 & 0111 = 0

咱們會發現要使表達式等於0,n-1必須使得n的n-1都向高位進1,也就是說知足一下條件:二進制

 x + 1 = n
 x & n = 0

咱們來看看有那些數能知足要求:co

10 & 01 = 0   -------2^1
100 & 011 = 0  -------2^2
1000 & 0111 = 0  -------2^3
10000 & 01111 = 0  -------2^4
。。。。。。

所謂代碼((n & (n-1))== 0)的含義是n知足2的n次方

這種問題通常在於考察分析和解決問題的能力。

相關文章
相關標籤/搜索