国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C > 正文

如何判斷一個數(shù)是否為2的冪次方?若是,并判斷出來是多少次方?

2020-01-26 16:09:44
字體:
供稿:網(wǎng)友
將2的冪次方寫成二進制形式后,很容易就會發(fā)現(xiàn)有一個特點:二進制中只有一個1,并且1后面跟了n個0; 因此問題可以轉(zhuǎn)化為判斷1后面是否跟了n個0就可以了。
如果將這個數(shù)減去1后會發(fā)現(xiàn),僅有的那個1會變?yōu)?,而原來的那n個0會變?yōu)?;因此將原來的數(shù)與去減去1后的數(shù)字進行與運算后會發(fā)現(xiàn)為零。
最快速的方法:
(number & number - 1) == 0
原因:因為2的N次方換算是二進制為10……0這樣的形式(0除外)。與上自己-1的位數(shù),這們得到結(jié)果為0。例如。8的二進制為1000;8-1=7,7的二進制為111。兩者相與的結(jié)果為0。計算如下:
1000
& 0111
-------
0000
使用遞歸來實現(xiàn)的代碼如下:
復(fù)制代碼 代碼如下:

#include "stdio.h"
#include "stdlib.h"
int log2(int value)   //遞歸判斷一個數(shù)是2的多少次方
{
 if (value == 1)
  return 0;
 else
  return 1+log2(value>>1);
}
int main(void)
{
 int num;
 printf("請輸入一個整數(shù):");
 scanf("%d",&num);
 if(num&(num-1))  //使用與運算判斷一個數(shù)是否是2的冪次方
  printf("%d不是2的冪次方!/n",num);
 else
  printf("%d是2的%d次方!/n",num,log2(num));
 system("pause");
 return 0;
}

使用非遞歸來實現(xiàn)的代碼如下:
復(fù)制代碼 代碼如下:

#include "stdio.h"
#include "stdlib.h"
int log2(int value)   //非遞歸判斷一個數(shù)是2的多少次方
{
 int x=0;
 while(value>1)
 {
  value>>=1;
  x++;
 }
 return x;
}
int main(void)
{
 int num;
 printf("請輸入一個整數(shù):");
 scanf("%d",&num);
 if(num&(num-1))     //使用與運算判斷一個數(shù)是否是2的冪次方
  printf("%d不是2的冪次方!/n",num);
 else
  printf("%d是2的%d次方!/n",num,log2(num));
 system("pause");
 return 0;
}

擴展:求一個數(shù)n的二進制中1的個數(shù)。
非常巧妙地利用了一個性質(zhì),n=n&(n-1) 能移除掉n的二進制中最右邊的1的性質(zhì),循環(huán)移除,直到將1全部移除,這種方法將問題的復(fù)雜度降低到只和1的個數(shù)有關(guān)系。代碼如下:
復(fù)制代碼 代碼如下:

int Func3(int data)
{   //利用了data&(data-1)每次都能移除最右邊的1,移除了多少個1,就是包含了幾個1
 int count = 0;
 while (data)
 {
  data = data & (data-1);
  count++;
 }
 return count;
}

擴展問題二:
A和B的二進制中有多少位不相同。這個問題可以分為兩步,(1)將A和B異或得到C,即C=A^B,(2)計算C的二進制中有多少個1。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产精品四虎| 91最新在线| 精品国产高清自在线一区二区三区 | gogo高清在线播放免费| 黄色片视频在线观看| 在线伊人免费视频| 精品视频三区| 久热免费视频| 国产中文字幕在线看| 久久国产精品久久久久久小说| 国产在线超碰| 96久久久久久| heisi视频网在线观看| 国产精品一区二区三区高清在线 | 国产羞羞视频在线观看| 国产黄色在线播放| 国产一级大片| 国产视频青青| 在线国产91| 青青九九免费视频在线| wwww在线观看免费视频| 男人天堂99| 中文资源在线官网| 中文字幕免费中文| av一本在线| 国产福利小视频在线观看| 亚洲wwwwww| 国产福利在线看| 尤物视频免费在线观看| 日本亚洲欧美| 亚洲91av| 91亚洲精选| 国产激情在线视频| 五月婷婷开心综合| 另类综合图区| 夜夜操天天干| 91青青在线视频| 精品a在线观看| 在线观看wwww| 国产91足控脚交在线观看| 国产免费人人看| 欧美a免费在线| 国产在线拍揄自揄拍视频| 亚洲欧美久久婷婷爱综合一区天堂 | 丁香婷婷激情| 日本电影全部在线观看网站视频| 国产福利av网站| 69堂视频在线观看国产| 69免费视频| av在线天天| 激情丁香婷婷| 国产精品自产拍在线网站| 免费男女羞羞的视频网站中文字幕| 亚洲视频精品在线观看| 四虎成人欧美精品在永久在线 | 亚洲综合激情六月婷婷在线观看| 一区二区三区四区在线免费视频| 亚洲综合在线不卡| av在线免费观看网| 狠狠操视频网| 国产精品你懂的在线观看 | 天天操天天操天天色天天要| 黄色av免费看| 国产精品入口麻豆完整版| 18激情网站| 久久久久久77777| 国产香蕉视频在线看| 精品女厕厕露p撒尿| 午夜在线视频| 国产日产一区二区| www.狠狠| 国产人成在线观看| 伊人精品影院| 国产天堂视频| 欧美成人亚洲高清在线观看| 国产精品欧美韩国日本久久| 欧洲一区av| 在线观看电影av| 国产一二三在线观看| 亚洲videos| 国产成人亚洲欧美电影| 免费一区二区三区视频狠狠| 国产视频第一区| 国产蜜臀在线| 欧美成人精品福利网站| 国产精品入口麻豆免费看| 亚洲欧美日韩成人网| 国产黄色免费网站| 好吊日视频在线观看| а√天堂www在线а√天堂视频| 国产激情在线视频| 国产调教视频在线观看| 二区三区中文字幕| h网站久久久| 天天干天天摸| baoyu777.永久免费视频| 尤物在线精品视频| 在线国产1区| 午夜在线不卡| 久久香蕉一区| 最近中文字幕mv免费高清电影| 亚洲成av人影片在线观看| 精品久久九九| 在线观看wwww| 欧美性猛交p30| 超碰免费在线| 国产免费黄色| 国产成人午夜电影| 99久久精品免费观看国产| 国产视频1区| 在线视频中文字幕久| av网址在线播放| xxx国产精品| 最近中文字幕mv2018在线高清| 中文字幕在线看精品乱码| 国产精品久久在线| 精品亚洲综合| www.狠狠操| 午夜国产视频| 99reav在线| 国产真实伦在线观看| 国产精品国产三级国产试看| 伊人精品影院| 国产一区二区影视| 国产福利三区| 超碰免费在线播放| 国产黄a三级三级三级av在线看 | 2019天天操夜夜操| 免费三级毛片| 国产不卡视频| 亚洲综合在线不卡| 最新av免费看| 欧美xxxxx性| 精精国产xxxx视频在线动漫| 九九热在线视频观看| 国产高潮av| 国产美女在线一区二区三区| 精品国产一区二区三区久久久狼牙| 青青草免费在线观看| 国产激情二区| 国产九九在线| 丁香花高清视频完整版在线观看| 91精品大全| 国产黄在线观看| 日本中文字幕高清视频| 在线亚洲精品自拍| 国产女人伦码一区二区三区不卡| 伊人春色在线| 18 激情视频在线| 国产精品剧情一区二区在线观看| 国产原创av在线| 欧美亚洲天堂| 日本黄在线观看| 欧美精品小视频| 欧美性xxxx交| www亚洲天堂| 午夜影院在线免费观看| 亚洲字幕成人中文在线观看| 97人人在线| 在线观看电影av| 国产娇喘精品一区二区三区图片| 国产一级大片| 国产精品国产三级国产试看| 国产黄在线观看| 国产91在线视频蝌蚪| 国产高清视频免费最新在线| 国产丝袜在线播放| 国产亚洲精品拍拍拍拍拍| 国产呻吟对白刺激无套视频在线| 国产免费人人看| 国产9色视频| 日本不卡视频一区二区| 黄色毛片在线| 福利视频网站导航| 国产精品久久久久久精| 国产黄色小视频| eeuss影影院www在线播放| 成视频年人免费看黄网站| 国产剧情av在线| 亚洲成人电视网| 国产精品一区二区三区四区色| 国产精品久久一区二区三区不卡| 亚洲国产成人综合| 尤物免费看在线视频| 99色在线观看| 中文字幕不卡| 日本国产在线| 国产精品毛片一区二区三区四区 | 亚洲夜夜综合| 青青草原国产在线| 国产精品乱码一区二区三区视频| eeuss影院在线观看| 午夜视频在线免费 | 亚洲欧美综合乱码精品成人网 | 国产一级二级在线| www中文字幕在线观看| 国产无遮挡又黄又爽免费软件 | 中文av字幕| 国产一卡二卡3卡4卡四卡在线| 中文字幕av高清|