青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

醬壇子

專注C++技術 在這里寫下自己的學習心得 感悟 和大家討論 共同進步(歡迎批評!!!)

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一偉 湖南商學院畢業 電子信息工程專業

常用鏈接

留言簿(19)

我參與的團隊

搜索

  •  

積分與排名

  • 積分 - 389905
  • 排名 - 64

最新隨筆

最新評論

閱讀排行榜

評論排行榜

方法1:
//main.cpp
#include <iostream>

using namespace std;
?
int count_ones(int n)

{

?????? n = (n & 0x55555555) + ((n & 0xaaaaaaaa) >> 1);

?????? n = (n & 0x33333333) + ((n & 0xcccccccc) >> 2);

?????? n = (n & 0x0f0f0f0f) + ((n & 0xf0f0f0f0) >> 4);

?????? n = (n & 0x00ff00ff) + ((n & 0xff00ff00) >> 8);

?????? n = (n & 0x0000ffff) + ((n & 0xffff0000) >> 16);

?

?????? return n;

}

?

int main(int argc,char* argv[])

{
?????? cout<<count_ones(255)<<endl;

?????? return 0;
}

方法2:
const int one_in_char[256]=
{
??? 0, 1, 1, 2, 1, 2,2,3
......
????????????????????????????? ,8
}
此為 0-255 每個數中 1 的個數。??

int func2(int v)
{
??? int n=v;
??? unsigned char *ptr=(unsigned char *)&n;
??? return one_in_char[ptr[0]]+one_in_char[ptr[1]]+one_in_char[ptr[2]]+one_in_char[ptr[3]];
}


本人覺得方法1更快速:)

posted on 2006-10-16 08:35 @王一偉 閱讀(1289) 評論(4)  編輯 收藏 引用 所屬分類: 4. C++

Feedback

# re: 統計一個32位int中“1”位的個數 2007-01-05 15:34 pengkuny
請問,count_ones的原理是什么?
我對位操作不是很清楚  回復  更多評論
  

# re: 統計一個32位int中“1”位的個數 2007-01-08 12:26 王一偉
好的 我晚上前給你回復 寫個詳細的過程和原理給你 其實這個只需要自己自己動手算算就知道了 :)  回復  更多評論
  

# re: 統計一個32位int中“1”位的個數 2007-01-08 17:39 王一偉
n = 9

//第一次計算 此時 n = 0000 0000 0000 0000 0000 0000 0000 1010

0000 0000 0000 0000 0000 0000 0000 1010
0101 0101 0101 0101 0101 0101 0101 0101 //0x55555555
&--------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0000


0000 0000 0000 0000 0000 0000 0000 1010
1010 1010 1010 1010 1010 1010 1010 1010 //0xaaaaaaaa
&--------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 1010

0000 0000 0000 0000 0000 0000 0000 1010
>>1---------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0101

0000 0000 0000 0000 0000 0000 0000 0000
+ 0000 0000 0000 0000 0000 0000 0000 0101
----------------------------------------------------------------
= 0000 0000 0000 0000 0000 0000 0000 0101

//第二次計算 此時 n = 0000 0000 0000 0000 0000 0000 0000 0101

0000 0000 0000 0000 0000 0000 0000 0101
0011 0011 0011 0011 0011 0011 0011 0011 //0x33333333
&------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0001

0000 0000 0000 0000 0000 0000 0000 0101
1100 1100 1100 1100 1100 1100 1100 1100
&------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0100

....... >>2

0000 0000 0000 0000 0000 0000 0000 0001
+ 0000 0000 0000 0000 0000 0000 0000 0001
-----------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0010

//第三次計算 此時 n = 0000 0000 0000 0000 0000 0000 0000 0010

0000 0000 0000 0000 0000 0000 0000 0010
0000 1111 0000 1111 0000 1111 0000 1111 //0x0f0f0f0f
&-----------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0010

0000 0000 0000 0000 0000 0000 0000 0010
1111 0000 1111 0000 1111 0000 1111 0000
&-----------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0000
......>>4
相加 還是得 0000 0000 0000 0000 0000 0000 0000 0010
后面的就不寫了






  回復  更多評論
  

# re: 統計一個32位int中“1”位的個數 2008-11-16 09:41 belo
其實這種方法比起傳統方法更慢
這是我的一個實現版本:
#include <iostream>
using namespace std;

int count_bits1(int n)
{
n = (n & 0x55555555) + ((n & 0xAAAAAAAA) >> 1); //計算相鄰兩位的bit和
n = (n & 0x33333333) + ((n & 0xCCCCCCCC) >> 2); //計算相鄰四位的bit和
n = (n & 0x0F0F0F0F) + ((n & 0xF0F0F0F0) >> 4); //計算相鄰八位的bit和
n = (n & 0x00FF00FF) + ((n & 0xFF00FF00) >> 8); //計算相鄰16位的bit和
n = (n & 0x0000FFFF) + ((n & 0xFFFF0000) >> 16); //計算相鄰32位的bit和

return n;
}

int count_bits2(int n)
{
int count = 0;
while(n)
{
count++;
n = n & (n-1);
}

return count;
}

int main(void)
{
cout << count_bits1(0xFF) << endl;
cout << count_bits2(0xFF) << endl;

return 0;
}

你可以反匯編一下,然后就知道了  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲最新中文字幕| 亚洲高清在线观看一区| 在线播放中文字幕一区| 亚洲欧美日本日韩| 亚洲免费一在线| 国产欧美日韩另类一区| 久久精品国产99国产精品澳门| 午夜久久黄色| 1769国产精品| 亚洲乱码国产乱码精品精| 欧美日韩综合久久| 性感少妇一区| 久久精品国产精品亚洲| 亚洲高清视频一区二区| 亚洲精品欧美一区二区三区| 国产精品国产成人国产三级| 久久成人18免费网站| 久久久久久久综合| 一本久道综合久久精品| 亚洲午夜精品福利| 在线免费观看日韩欧美| 亚洲精品综合| 国产一区视频网站| 亚洲伦理久久| 黄色成人在线| 一区二区免费在线播放| 红桃视频亚洲| 99一区二区| 在线欧美不卡| 亚洲视频一区在线观看| 亚洲国产精品va在线观看黑人 | 国产女主播一区二区三区| 久久久久国产一区二区三区四区 | 亚洲日本一区二区| 国产伦理一区| 亚洲激情网址| 极品少妇一区二区| 亚洲桃花岛网站| 亚洲精品一区二区三区四区高清 | 亚洲精品一区二区三区av| 国产亚洲精品aa| 日韩午夜精品视频| 亚洲国产经典视频| 先锋影音国产精品| 亚洲一区三区视频在线观看| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲在线黄色| 欧美日本韩国一区二区三区| 免费亚洲一区二区| 国产日韩欧美在线| 亚洲婷婷综合色高清在线| 99re热精品| 欧美成人a视频| 欧美成人精品影院| 黑人巨大精品欧美一区二区| 亚洲欧美日韩国产成人| 亚洲午夜视频| 欧美三级免费| 艳女tv在线观看国产一区| 99精品欧美一区二区三区综合在线| 久久久99久久精品女同性| 久久大逼视频| 国产午夜精品一区二区三区视频| 亚洲少妇最新在线视频| 亚洲一区二区三区在线看 | 久久精品国产亚洲一区二区| 亚洲欧美一区二区三区极速播放| 欧美日韩精品福利| 亚洲精品美女在线观看| 一区二区三区免费网站| 欧美美女喷水视频| 亚洲最新中文字幕| 亚洲欧美日韩在线| 国产日韩欧美亚洲| 久久不射电影网| 免费成人av在线| 亚洲福利视频一区二区| 免费不卡欧美自拍视频| 欧美激情精品久久久久久免费印度 | 欧美在线视频一区二区三区| 午夜电影亚洲| 国产欧美日韩视频在线观看 | 免费在线成人| 亚洲人成啪啪网站| 欧美日韩国产综合一区二区| 一区二区三区不卡视频在线观看| 亚洲欧美韩国| 国产一区二区三区四区hd| 久久九九精品| 亚洲国产精品欧美一二99| 一区二区日韩精品| 国产日韩欧美在线播放| 久久午夜电影| 99国产精品国产精品久久| 欧美专区中文字幕| 亚洲国产视频直播| 国产精品成人在线观看| 久久精品国产99精品国产亚洲性色| 蜜臀91精品一区二区三区| 夜色激情一区二区| 国产香蕉久久精品综合网| 免费欧美网站| 亚洲在线1234| 亚洲福利国产精品| 久久av二区| 最新亚洲电影| 国产欧美日韩视频一区二区三区| 久久综合福利| 亚洲影院污污.| 亚洲福利国产| 久久免费午夜影院| 宅男噜噜噜66一区二区| 红杏aⅴ成人免费视频| 欧美性一二三区| 狂野欧美一区| 欧美亚洲一级| 99这里只有精品| 亚洲电影免费| 久久精品在这里| 亚洲五月婷婷| 亚洲人www| 影音欧美亚洲| 国产一区二区三区av电影| 欧美日韩中文字幕| 免费久久99精品国产| 羞羞色国产精品| 亚洲视屏在线播放| 亚洲精品中文字幕有码专区| 每日更新成人在线视频| 久久国产精品99久久久久久老狼| 在线亚洲激情| 亚洲精品欧美激情| 在线国产精品播放| 狠狠综合久久| 激情丁香综合| 国产在线国偷精品产拍免费yy| 国产精品久久久久久久久久久久 | 香蕉久久夜色精品国产| 夜夜爽夜夜爽精品视频| 亚洲欧洲在线免费| 亚洲高清色综合| 欧美国产精品va在线观看| 久久夜色精品| 理论片一区二区在线| 久久精品首页| 久久男人av资源网站| 久久嫩草精品久久久精品| 欧美一区网站| 欧美中文字幕在线观看| 久久精品最新地址| 久久―日本道色综合久久| 久久乐国产精品| 美女精品网站| 亚洲盗摄视频| 亚洲免费观看高清完整版在线观看熊| 亚洲国产精品ⅴa在线观看| 亚洲国产精品一区制服丝袜| 91久久一区二区| 亚洲乱码日产精品bd| 99视频超级精品| 亚洲欧美日韩区| 久久精品一区中文字幕| 老牛国产精品一区的观看方式| 米奇777超碰欧美日韩亚洲| 欧美精品成人| 国产精品午夜电影| 国内自拍视频一区二区三区| 亚洲第一区在线观看| 亚洲人成绝费网站色www| 亚洲图片欧洲图片av| 欧美一区二区精品久久911| 看片网站欧美日韩| 亚洲欧洲一区| 香蕉国产精品偷在线观看不卡| 香蕉久久久久久久av网站| 老鸭窝毛片一区二区三区| 欧美日韩人人澡狠狠躁视频| 国产伦精品免费视频| 亚洲国产日韩一级| 亚洲欧美日韩成人| 老司机一区二区| 99视频日韩| 蜜桃久久av一区| 国产精品xvideos88| 一区二区亚洲精品国产| 亚洲网站视频| 免费成人高清在线视频| 一区二区欧美在线观看| 久久夜色精品一区| 国产精品久久久久av| 亚洲国产精品精华液网站| 亚洲综合色在线| 亚洲福利久久| 欧美中文字幕在线观看| 欧美日韩一区二区三区四区在线观看| 国产日韩欧美在线播放| 国产精品99久久99久久久二8| 久久免费午夜影院| 亚洲一区二区三区在线| 欧美精品 国产精品|