力扣 231 2的冪

題目要求 給出一個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即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章