麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

如何判斷一個整數的二進制中有多少個1

2020-01-26 16:05:13
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

// 判斷一個整數的二進制位中有多少個1
void totalOne(int x)
{
 int count = 0;
 while(x)
 {
  x = x & ( x - 1 );
  count++;
 }
 printf("count = %d/n", count);
}

循環: x = x & ( x - 1 ); count++; 直到x為0為止。該方法的時間復雜度是O(m)
在此,不妨把x的二進制位表示為
          x=an-1an-2...a0。
按從低位到高位的順序,不失一般性,假設x的第i位為第一個為1的二進制位,即:ai=1。此時有:
          x       =an-1an-2...ai+1100...0              <1>
         (x-1)  =an-1an-2...ai+1011...1              <2>
很明顯,從式1和式2可以得出,在第一次 x & (x-1) 后:
          x=an-1an-2...ai+1000...0
之后重復同樣操作,直到x的二進制位中沒有1為止
從上面可以看出,每執行過一次 x & (x-1) 后,都會將x的二進制位中為1的最低位的值變為0,并記數加1。
目前而言,一個整數最大64bit,所有三種方法執行起來都可以認為是0(1)。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: www.精品久久 | 水卜樱一区二区av | 国产一区二区三区视频免费 | 欧美大电影免费观看 | chinesehdxxxx实拍| 国产精品久久久久久久久久10秀 | 久草在线资源观看 | 精品一区二区免费 | 香蕉在线播放 | 热99在线视频| 日本黄色a视频 | 成人资源在线观看 | 欧美日本综合 | 在线2区 | 久久精精品 | 免费a级网站 | 精品久久9999 | 在线91视频 | 欧美亚洲一区二区三区四区 | 精品久久久久久久久久久久久久久久久久久 | 国内精品伊人久久 | 欧美成人三级视频 | 成人做爽爽爽爽免费国产软件 | 色诱亚洲精品久久久久久 | 国产成人综合在线视频 | 高清视频91 | 国产精品99久久久久久董美香 | 国产成人高潮免费观看精品 | 午夜性久久 | 免费在线观看亚洲 | 手机av免费电影 | 亚洲一级片免费观看 | 一级黄色片在线看 | 99热99精品 | 久久久久久三区 | 久久2019中文字幕 | 成人黄色短视频在线观看 | 91九色蝌蚪国产 | 午夜影院在线免费观看 | 午夜精品区 | 91精选视频 |