js 如何判斷一個數字是不是2的n次方冪

來源:互聯網
上載者:User

標籤:image   其他   check   src   func   簡單   條件判斷   是的   代碼   

  昨天去面試時,面試官問了一道面試題,說如何判斷一個數是不是2的n次方冪,我當時不知道2的n次方冪是什麼(糗大發了??),還好給我解釋了一下。最後回家上網查查資料,整理了一下方法。

  方法一 

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

   比如: 2  2%2=0  (2/2)=1                         是

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

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

                      7  7%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                   3    --->   11            

    4     --->   100                 6    --->   110           

    8     --->   1000               7    --->   111

 

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

               9   的二進位   1001      9-1 的二進位  1000    按位與運算      1001&1000   ---> 1000   所以9不是2的次方冪。

               24  的二進位  11000     24-1 的二進位  10111  按位與運算    11000&10111  ---> 10000  所以24不是2的次方冪。

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

代碼實現:

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

結果如下:

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

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

js 如何判斷一個數字是不是2的n次方冪

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.