巧妙判斷乙個數是否為2的整數次冪

2021-10-01 04:16:29 字數 440 閱讀 4099

package main

import "fmt"

/* 如何判斷乙個數是否為2的整數次冪

思路1. 暴力破解:從1開始乘以2,迴圈並和目標值比較,當大約目標值則終止,顯然此方法效率非常低下

思路2. 把乘以2改為移位運算,提高一點效率,還是沒有解決演算法的根本問題

思路3. 通過轉換成二進位制觀察,為2的整數次冪的數字轉換成2進製都是首位為1其他位都為0的數字,比如10,100,1000,10000.

並且如果該值減1都會對應的變成1,11,111,1111.

這對應的兩組值對應求與(10 & 1), (100 & 11), (1000 & 111), (10000 & 1111),發現結果都為0

*/func ispowerof2(num int) bool

func main()

判斷乙個數是否是2的整數次冪

title iscompletepower description 判斷乙個數是否是2的整數次冪 判斷原理 2的整數次冪,都是以1開頭,其餘其餘位為0的形式 例如 8的二進位制形式為 1 0 0 0 這樣的乙個數進行 1後,所得數的各位都會和原數的各位成反碼 例如 7的二進位制形式位 0 1 1 1...

面試官 判斷乙個數是否為2的整數次冪

postbody class blogpost body 判斷乙個正整數是否是2的整數冪 如4是2的2次方,返回true 5不是2的整數次冪,則返回false 要求效能盡可能高。第一種考慮 乘法 建立乙個中間變數temp,初始值是1,然後進入乙個迴圈,每次迴圈都讓temp和目標值進行比較,如果相等,...

java 判斷乙個數是否是2的整數次冪

有一道演算法題是這樣的,求乙個數是否是2的整數次冪。剛開始我的演算法是這樣寫的 讓這個數每次都除以2,然後再乘以2,看這兩個數是否相等,不相等就返回false。放在迴圈裡面讓它從頭除到尾。public boolean ispower intnumber else else return true 用...