首頁 >web前端 >js教程 >js 判斷一個數字是不是2的n次方冪的實例

js 判斷一個數字是不是2的n次方冪的實例

小云云
小云云原創
2017-12-07 16:00:492391瀏覽

方法一

如何判斷一個數是否為2的n次方冪,其簡單判斷方法就是這個數num直接除2,若餘數為0,則num/2再除2,再判斷是不是餘數是不是0,是的話繼續按上一步來,直到最後為num=1。

例如:

2  2%2=0  (2/2)=1                與為

#  4%2=002/ )%2=0  (4/2/2)=1    是

6  6%2=0  (6/2)%2=1                         不是

24 24%2=0   (24/2)%2=0   (24/2/2)%2=0   (24/2/2/2)%2=1    不是

#程式碼實作:

function check(num){
 if(num != 1){
  while(num != 1){
   if(num%2 == 0){
    num = num / 2;
   }else{
    return false;
   }

  }
  return true;
 }else{
  return true;
 }
}


#結果如下:

 

方法二#透過二進位的方法可以判斷一個數num是不是2的n次方冪,法則可知,只要是2的次方冪,必然是最高位為1,其餘為0,當num-1時,則最高位是0,其餘是1.

按位與運算:  1&1=1 0&1=0 0&0=0 1&0=0

2     --->   10               

4     --->   100                 6   

##8     --->   1000               7    --->        8-1 的二進位  0111    按位元與運算      1000&0111    -->  0000    所以8是2的n次方冪。

9   的二進位   1001      9-1 的二進位  1000    位元與運算      1001&1000  按位與運算

24  的二進位  11000     24-1 的二進位  11000  位元與運算    11000&10111  ---> 10000; 我不是次方的次方。

可以透過num.toString(2)來寫出num的二進位。

#程式碼實作:

function check(num){
 return (num > 0) && ((num & (num - 1)) == 0);
}

 結果如下:


##另外1也是2的0次方。

還有其他條件沒有寫出,這個方法是來判斷一個數是不是2的n次方冪,並沒有寫出這個數是不是整數,可以的話,自己加條件判斷。

相關推薦:

JS如何使用貪心演算法解決找零問題

js判斷是否為空字串的簡寫方法實例詳解

PHP和JS判斷字串是否為數字

#

以上是js 判斷一個數字是不是2的n次方冪的實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn