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

春暖花開
雪化了,花開了,春天來了
posts - 149,comments - 125,trackbacks - 0
這也是《程序員面試攻略》上的一道題,題目是這樣的:
請編寫一個函數,確定一個整數的計算機內部表示中有幾個“1”。

思索了一下這個題目,我是這樣考慮的,也學書上給出偽代碼
count = 0;
while (這個整數不為0)
{
      如果這個整數對2求余的結果是1,則count加1;
     將這個整數向右移移位
}

代碼寫出來是這樣的:
int numOnesInBinary(int num)
{
    
int count = 0;
    
while (num != 0)
    
{
        
if (num % 2 == 1)
            count
++;
        num 
= num>>1;
    }


    
return count;
}

看了一下書中的答案,的確比我簡練很多。對于求余這個方法還是比較笨的。書中采用了邏輯與。

判斷條件從“num%2 == 1”變成 “num&1 == 1”,從程序中更傾向與后者。
所以在分析問題的時候,要學會用邏輯“與、或、異或”進行判斷。

到這一步,看似已經很完美了。但是書中又出奇的給了另一種解法。這種想法我真的沒有想到。

想法的出發點是考慮一個數字減1時,它的二進制發生了什么變化。減1得到的結果是,從最低位的1到最低位都發生了翻轉,其他高位保持不變。如果您對這個整數和減一后的結果進行AND操作,得到的新的數字與原來的整數相比,只有最后一個1變成0.

如果進行多次這樣的操作,這個整數的值變為0。這樣我們也就獲得了這個數的計算機表示中“1”的個數。

int numOnesInBinary2(int num)
{
    
int count = 0;
    
while(num != 0)
    
{
        num 
= num & (num-1);
        count
++;
    }

    
return count;
}


第一方法的時間復雜度為o(n),第二種的時間復雜度為o(m),m為1的個數。

后記:
最近一周多,一直在做這本書上的編程題。一天3道,自己先嘗試編寫,運行成功后再與書上的解答進行對比。稍有幾次略感比書上稍好些。但大多數情況還是效率差一些。想想原因,還是練得比較少。所以繼續努力。多多積累,養成良好的思維習慣。

posted on 2009-07-28 15:56 Sandy 閱讀(729) 評論(3)  編輯 收藏 引用 所屬分類: 面試總結

FeedBack:
# re: “1”的個數
2009-08-02 08:21 | codespy
無分支版的你這個快,原理是遞歸求二進位相鄰兩位的和。  回復  更多評論
  
# re: “1”的個數
2009-08-02 08:23 | codespy
@codespy
無分支版的 比 你這個快,原理是遞歸求二進位相鄰兩位的和。  回復  更多評論
  
# re: “1”的個數
2009-08-04 11:42 | Sandy
@codespy

這個我還真的沒有想到.
你說的是這種么?
int numOnesInBinary3(int num)
{
num = num - ((num >> 1) & 0x55555555);
num = (num & 0x33333333) + ((num >> 2) & 0x33333333);
num = (num+ (num >> 4)) & 0x0F0F0F0F;
num = num + (num >> 8);
num = num + (num >> 16);
return num & 0x0000003F;
}

我是在http://bvcat007.javaeye.com/blog/203577中看到的,原理是利用二分法,兩兩一組相加,之后四個四個一組相加,接著八個八個,最后就得到各位之和了。

他還提供了一種是
int numOnesInBinary4(int num)
{
unsigned n;
n = (num >> 1) & 033333333333;
num = num - n;
n = (n >> 1) & 033333333333;
num = num - n;
num = (num + (num >> 3)) & 030707070707;
num = num% 63;

return num;
}
首先是將二進制各位三個一組,求出每組中1的個數,然后相鄰兩組歸并,得到六個一組的1的個數,最后很巧妙的用除63取余得到了結果。因為2^6 = 64,也就是說 x_0 + x_1 * 64 + x_2 * 64 * 64 = x_0 + x_1 + x_2 (mod 63),這里的等號表示同余。

  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产欧美日本一区视频| 欧美日韩在线大尺度| 国产欧美一区二区精品忘忧草| 看片网站欧美日韩| 香蕉免费一区二区三区在线观看| 亚洲激情视频在线观看| 老司机aⅴ在线精品导航| 亚洲第一中文字幕在线观看| 久久亚洲影音av资源网| 久久综合一区二区| 亚洲国产高清一区二区三区| 欧美国产高清| 久久综合精品国产一区二区三区| 欧美77777| 99re在线精品| 亚洲天堂偷拍| 国内精品视频一区| 欧美国产专区| 欧美日韩一区二区三区免费看 | 亚洲电影欧美电影有声小说| 久久影视三级福利片| 亚洲精品乱码久久久久久蜜桃麻豆| 一本一本久久| 亚洲欧美日韩国产中文在线| 国产欧美精品一区| 久久亚洲私人国产精品va媚药| 亚洲国产一二三| 国产精品久久久久av| 久久国产精品72免费观看| 欧美中文在线观看国产| 91久久精品国产| 亚洲深夜福利网站| 激情一区二区| 亚洲一区二区成人| 亚洲电影免费在线观看| 一区二区激情小说| 一区在线免费观看| 在线视频欧美一区| 黄色一区二区在线观看| av成人手机在线| 精久久久久久久久久久| 99国产精品视频免费观看一公开 | 久久一区二区三区四区| 欧美r片在线| 欧美一区国产二区| 欧美伦理视频网站| 久久婷婷国产麻豆91天堂| 欧美日韩在线一区二区| 久久国产色av| 欧美日精品一区视频| 免费观看在线综合| 国产欧美日韩亚州综合| 日韩天天综合| 亚洲毛片网站| 久久综合激情| 久久亚洲捆绑美女| 国产一区二区三区久久 | 小嫩嫩精品导航| 欧美激情精品久久久久久蜜臀| 亚洲国产精品成人精品| 性欧美大战久久久久久久免费观看 | 亚洲无线一线二线三线区别av| 亚洲高清一区二区三区| 激情伊人五月天久久综合| 亚洲摸下面视频| 亚洲视频中文| 欧美日韩一区二区三区四区五区| 一本色道久久综合亚洲二区三区| 亚洲乱码一区二区| 99riav久久精品riav| 欧美电影免费观看大全| 久久只有精品| 伊人狠狠色j香婷婷综合| 欧美一区二区三区啪啪| 欧美自拍偷拍| 国产一区二区日韩精品| 欧美在线视频在线播放完整版免费观看 | 亚洲精品欧美极品| 亚洲日本欧美在线| 欧美激情精品久久久久久大尺度 | 欧美激情黄色片| 欧美国产激情二区三区| 国产女优一区| 久久久五月婷婷| 久久gogo国模裸体人体| 国产视频久久| 久久天天狠狠| 女女同性精品视频| 亚洲免费激情| 欧美精品九九| 亚洲无毛电影| 先锋影音一区二区三区| 国产午夜精品一区二区三区欧美 | 欧美chengren| 亚洲精品一级| 91久久国产精品91久久性色| 欧美91大片| 亚洲高清色综合| 亚洲一级影院| 欧美日韩视频一区二区| 亚洲欧美在线免费观看| 欧美影片第一页| 国产无遮挡一区二区三区毛片日本| 久久精品国产999大香线蕉| 欧美新色视频| 亚洲一区视频| 香蕉久久一区二区不卡无毒影院 | 91久久线看在观草草青青| 久久久久国产精品一区二区| 美女999久久久精品视频| 国产欧美日韩综合| 午夜性色一区二区三区免费视频| 欧美午夜精品久久久久久孕妇| 伊人久久综合| 久久精品免费播放| 亚洲精品视频在线播放| 亚洲视频免费| 亚洲狠狠婷婷| 欧美日韩1区| 久久久久久999| 亚洲精品之草原avav久久| 久久精品一区二区三区中文字幕 | 亚洲国产精品美女| 午夜精品久久久久久| 国产一区二区0| 欧美日韩国产成人在线免费| 亚洲欧美国内爽妇网| 亚洲精品国产精品乱码不99按摩 | 亚洲影视在线| 亚洲激情精品| 欧美中文字幕精品| av72成人在线| 国内成人精品一区| 国产精品三级久久久久久电影| 狂野欧美激情性xxxx| 亚洲欧美日韩国产一区| 黄色国产精品| 国产精品久久久久aaaa| 久久综合国产精品| 久久福利影视| 亚洲精品国产无天堂网2021| 榴莲视频成人在线观看| 性欧美超级视频| 亚洲日本理论电影| 亚洲国产精品美女| 国产色产综合色产在线视频| 国产精品久久久久久av福利软件| 欧美激情国产日韩精品一区18| 一区二区视频免费在线观看 | 韩日在线一区| 欧美午夜在线观看| 欧美大片一区二区| 免费影视亚洲| 久久九九有精品国产23| 久久久国产亚洲精品| 亚洲图片欧美午夜| 亚洲午夜羞羞片| 99热免费精品在线观看| 亚洲一区二区三区四区视频| 最新国产拍偷乱拍精品| 日韩一级免费观看| 一个色综合导航| 亚洲三级影院| 亚洲天堂免费观看| 日韩一区二区福利| 中日韩男男gay无套 | 国产精品视频一二三| 欧美日韩精品免费看| 亚洲欧美日韩国产中文在线| 欧美激情视频一区二区三区在线播放 | 伊人蜜桃色噜噜激情综合| 国产精品毛片高清在线完整版| 亚洲视频在线观看| 在线一区日本视频| 一区二区欧美激情| 久久精品99国产精品酒店日本| 欧美在线免费| 欧美高清你懂得| 欧美激情一区二区三级高清视频 | 久久综合一区二区| 久久在线免费| 亚洲第一精品夜夜躁人人爽| 久久久久久网站| 欧美高清在线精品一区| 亚洲三级电影全部在线观看高清| 国产精品国产自产拍高清av王其| 久久精品国产91精品亚洲| 午夜精品美女久久久久av福利| 亚洲日本在线观看| 亚洲一二三级电影| 久久夜色撩人精品| 欧美精品一区二区三区高清aⅴ| 欧美中文字幕第一页| 久久综合狠狠综合久久激情| 欧美日韩国产精品 | 99综合电影在线视频| 欧美一区日本一区韩国一区| 久久久久久夜| 欧美黄色日本| 99精品视频免费观看|