題目要求 給出一個int 看是否是2的冪 即 2^? 能否 == int值
自己解法:
利用取模mod 的底層表示 n & (2-1) + 逐次/2 , 取mod值 != 0 時可以返回 false
別人解法:
1. 值一定是 正值
2.2次冪的底層表示其實是 100...00 即 1 後面都是0
那麼就可以用 n & (n-1) 來判斷 —— 和mod的底層思想十分類似
例如 1000 & 0111 那麼結果 一定是0
但是 1001 & 1000 那麼結果一定不爲0
因此 只要 確保 大於0 並且 n & (n - 1) = 0即可