最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js 判斷一個數(shù)字是不是2的n次方冪的實(shí)例

 更新時間:2017年11月26日 09:40:07   作者:熱愛前端的17號誒  
下面小編就為大家分享一篇js 判斷一個數(shù)字是不是2的n次方冪的實(shí)例,具有很好的參考價值,希望對大家有所幫助

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

方法一

如何判斷一個數(shù)是否是2的n次方冪,其簡單判斷方法就是這個數(shù)num直接除2,若余數(shù)為0,則num/2再除2,再判斷是不是余數(shù)是不是0,是的話繼續(xù)按上一步來,直到最后為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    不是

代碼實(shí)現(xiàn):

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

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

結(jié)果如下:

 方法二

通過二進(jìn)制的方法可以判斷一個數(shù)num是不是2的n次方冪,規(guī)律可知,只要是2的次方冪,必然是最高位為1,其余為0,當(dāng)num-1時,則最高位是0,其余是1.

按位與運(yùn)算:  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   的二進(jìn)制   1000      8-1 的二進(jìn)制  0111    按位與運(yùn)算      1000&0111    -->  0000    所以8是2的n次方冪。

9   的二進(jìn)制   1001      9-1 的二進(jìn)制  1000    按位與運(yùn)算      1001&1000   ---> 1000   所以9不是2的次方冪。

24  的二進(jìn)制  11000     24-1 的二進(jìn)制  10111  按位與運(yùn)算    11000&10111  ---> 10000  所以24不是2的次方冪。

可以通過num.toString(2)來寫出num的二進(jìn)制。

代碼實(shí)現(xiàn):

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

 結(jié)果如下:

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

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

以上這篇js 判斷一個數(shù)字是不是2的n次方冪的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • js實(shí)現(xiàn)簡單抽獎功能

    js實(shí)現(xiàn)簡單抽獎功能

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡單抽獎功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 微信小程序-橫向滑動scroll-view隱藏滾動條

    微信小程序-橫向滑動scroll-view隱藏滾動條

    本篇文章主要介紹了微信小程序-橫向滑動scroll-view隱藏滾動條的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • js中for in的用法示例解析

    js中for in的用法示例解析

    使用js的朋友對其中for in的并不陌生吧,下面用示例為大家介紹下其具體使用方法
    2013-12-12
  • javascript 定時器工作原理分析

    javascript 定時器工作原理分析

    說到 javascript 中的定時器,我們肯定會想到 setTimeout() 和 setInterval() 這兩個函數(shù)。本文將從 事件循環(huán)(Event Loop) 的角度來分析兩者的工作原理和區(qū)別
    2016-12-12
  • JavaScript實(shí)現(xiàn)商品放大鏡效果

    JavaScript實(shí)現(xiàn)商品放大鏡效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)商品放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 在JavaScript中模擬類(class)及類的繼承關(guān)系

    在JavaScript中模擬類(class)及類的繼承關(guān)系

    眾所周知,JavaScript中沒有類,然而我們卻可以動手實(shí)現(xiàn)一個擁有繼承特性的類,所以接下來我們要討論的便是在JavaScript中模擬類(class)及類的繼承關(guān)系:
    2016-05-05
  • 使用js畫圖之正弦曲線

    使用js畫圖之正弦曲線

    這篇文章主要介紹了使用js繪制幾何圖形的方法的系列文章,本文主要講訴正弦曲線的繪制方法,需要的朋友可以參考下
    2015-01-01
  • 一文帶你搞懂JS中導(dǎo)入模塊import和require的區(qū)別

    一文帶你搞懂JS中導(dǎo)入模塊import和require的區(qū)別

    JavaScript中,模塊是一種可重用的代碼塊,它將一些代碼打包成一個單獨(dú)的單元,并且可以在其他代碼中進(jìn)行導(dǎo)入和使用。JavaScript中有兩種常用的方式:使用import和require,本文主要聊聊他們二者的區(qū)別
    2023-03-03
  • JS中Swiper的使用和輪播圖效果

    JS中Swiper的使用和輪播圖效果

    Swiper是移動端的一款非常強(qiáng)大的觸摸滑動插件。下面通過本文給大家分享JS中Swiper的使用和輪播圖效果,感興趣的的朋友一起看看吧
    2017-08-08
  • Bootstrap3 Grid system原理及應(yīng)用詳解

    Bootstrap3 Grid system原理及應(yīng)用詳解

    這篇文章主要為大家詳細(xì)介紹了Bootstrap3 Grid system原理及應(yīng)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論

新和县| 玉山县| 新泰市| 西乡县| 恩施市| 黄陵县| 开远市| 都匀市| 西畴县| 安康市| 乡城县| 恩施市| 巢湖市| 正定县| 麟游县| 丘北县| 鹤壁市| 嘉善县| 曲沃县| 广汉市| 九台市| 措勤县| 望城县| 调兵山市| 民和| 秦安县| 西充县| 容城县| 那坡县| 永康市| 普格县| 清徐县| 永新县| 囊谦县| 磐安县| 开平市| 剑川县| 辽中县| 余江县| 禄丰县| 贵南县|