国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 14:51:59
字體:
來源:轉載
供稿:網友

昨天去面試時,面試官問了一道面試題,說如何判斷一個數是不是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次方冪的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 车致| 汾西县| 锡林郭勒盟| 浙江省| 上虞市| 当雄县| 香格里拉县| 子洲县| 卢湾区| 永平县| 侯马市| 满洲里市| 宜章县| 乌兰县| 新营市| 甘肃省| 八宿县| 乌鲁木齐市| 桦南县| 文水县| 南木林县| 乐业县| 丹阳市| 南部县| 临猗县| 长葛市| 永寿县| 台中县| 延庆县| 孝义市| 万荣县| 百色市| 大悟县| 缙云县| 平和县| 宝鸡市| 静宁县| 平山县| 呼玛县| 前郭尔| 澳门|