正如大家所熟知的那樣,我們輸入到計算機中的數據,都是以二進制的格式保存處理的,所以此方法就是利用這一特點來進行判別!(除2的零次方)
將2的整數冪次方轉換為二進制后,仔細觀察后會很容易發現一個特點:整串數字中只有一個1,在其后跟了多個0.
比如:
2:10;
4:100;
8:1000;
·
·
·
128:10000000
所以我們只要判斷1后面是否跟了若干個0就可以了。
那么我們又會發現:這個數減去1的差,原來的那個“1”變為“0”,那n個“0”變為了“1”;緊接著將原來的數和減去1后的數進行“與”運算后會發現最終結果一定是“0”。
所以轉換為代碼:
??
(number & number - 1) == 0