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

posts - 15,comments - 21,trackbacks - 0
開門見山,我先提出幾個(gè)問題,大家可以先想想,然后我再說出我的方法
1.如何判斷一個(gè)數(shù)M是否為2的N次方?
2.一個(gè)數(shù)N,如何得到一個(gè)數(shù)是M,M是不小于N的最小2的K次方

先說第一個(gè)問題,我有兩個(gè)思路
第一,可以通過判斷M的二進(jìn)制中1的個(gè)數(shù)。而判斷M中1的個(gè)數(shù)可以通過下面方法獲得
int GetOneCnt(int m) 
{
    if ( m == 0 )
        return 0;
    
    int cnt = 1;
    while(m & (m-1))
    {
        cnt++;
        m--;
    }
    
    return cnt;
}
很明顯M中1的個(gè)數(shù)為1和M是2的N次方互為沖要條件
第二個(gè)思路,我們可以這樣,還是利用M的二進(jìn)制表示,從最高位開始,以變量high_pos表示第一個(gè)1的下標(biāo),接著從最低位開始,變量low_pos表示第一個(gè)1的下標(biāo),如果high_pos=low_pos,則M為2的N次方
int HighestBitSet(int input)
{
    register int result;

    if (input == 0)
    {
        return  -1;
    }

#ifdef WIN32
    _asm bsr eax, input
    _asm mov result, eax
#else
    asm("bsr %1, %%eax;"
    "movl %%eax, %0"
    :"=r"(result)
    :"r"(input)
    :"%eax");
#endif

    return result;
}
int LowestBitSet(int input)
{
    register int result;

    if (input == 0)
    {
        return  -1;
    }

#ifdef WIN32
    _asm bsf eax, input
    _asm mov result, eax
#else
    asm("bsf %1, %%eax;"
    "movl %%eax, %0"
    :"=r"(result)
    :"r"(input)
    :"%eax");
#endif

    return result;
}

再說第二個(gè)問題
其實(shí)有了第一個(gè)問題的思路,這個(gè)問題就更好解決了,先判斷一個(gè)數(shù)是否為2^N,如果是,直接返回,否則返回2^(N+1)
代碼如下
int CeilingPowerOfTwo(int iInput)
{
    if (iInput <= 1)
        return  1;

    int32_t highestBit = HighestBitSet(iInput);
    int32_t mask = iInput & ((1 << highestBit) - 1); // 相當(dāng)于input對2^highestBit求余
    highestBit += ( mask > 0 );

    return (1<<highestBit);
}
posted on 2012-10-01 15:53 梨樹陽光 閱讀(1424) 評論(4)  編輯 收藏 引用 所屬分類: C

FeedBack:
# re: 兩個(gè)小問題[未登錄]
2012-10-01 17:49 | Eric
如果是要求效率最佳,使用位運(yùn)算最快:
問題一:if (x&(x-1)==0) 則是2的N次方
問題二:float f = (float)(v);
return 1 << ((*(unsigned int*)(&f) >> 23) - 126);

問題二的解法是網(wǎng)上看來的,因?yàn)楦↑c(diǎn)數(shù)前1+8位記錄了符號(hào)和指數(shù),求出指數(shù)再用移位得到最小的2的N次方
還看到另一種解法:fb 7的malloc.c里面的實(shí)現(xiàn):
static inline size_t
pow2_ceil(size_t x)
{

x--;
x |= x >> 1;
x |= x >> 2;
x |= x >> 4;
x |= x >> 8;
x |= x >> 16;
#if (SIZEOF_PTR == 8)
x |= x >> 32;
#endif
x++;
return (x);
}
這個(gè)似乎效率也不差,而且沒有bug,以上供樓主參考  回復(fù)  更多評論
  
# re: 兩個(gè)小問題
2012-10-01 17:56 | 梨樹陽光
@Eric
非常感謝  回復(fù)  更多評論
  
# re: 兩個(gè)小問題
2012-10-01 20:01 | yrj
Ref: the FXT library and the fxtbook: "Matters Computational" http://www.jjj.de/fxt/  回復(fù)  更多評論
  
# re: 兩個(gè)小問題
2012-10-08 18:20 | luckyC++
@Eric
原諒我的無知。勞煩大俠告知fb7是什么?望不吝賜教,在此謝過!  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人精品在线视频| 亚洲欧美日韩直播| 国产又爽又黄的激情精品视频| 久久久久久久999| 欧美午夜不卡在线观看免费 | 欧美日韩高清在线| 久久久久国产精品人| 欧美三级视频在线观看| 欧美激情免费观看| 精品福利电影| 久久精品91| 久久国产88| 国产精品永久入口久久久| 99视频一区二区三区| 亚洲美女精品久久| 欧美www视频| 欧美激情a∨在线视频播放| 激情视频一区| 久久精品国产久精国产思思| 欧美在线一级视频| 国产欧美亚洲视频| 性欧美超级视频| 欧美一级视频免费在线观看| 欧美性一区二区| 一区二区三区 在线观看视| 亚洲夜间福利| 国产精品福利网站| 亚洲欧美日韩另类精品一区二区三区| 亚洲一区影院| 国产欧美一区二区在线观看| 亚洲欧美日韩综合国产aⅴ| 欧美一区二区黄色| 国产三级欧美三级日产三级99| 亚洲欧美第一页| 久久久九九九九| 一区二区三区在线观看欧美| 久久午夜精品一区二区| 亚洲电影免费观看高清| 日韩亚洲一区二区| 欧美系列亚洲系列| 亚洲欧美中文另类| 免费成人你懂的| 日韩午夜一区| 国产精品日本一区二区| 亚洲欧美中文日韩在线| 久久亚洲视频| 日韩亚洲精品视频| 国产精品视频网址| 久久久蜜桃精品| 亚洲精品久久久久久下一站| 亚洲一区二区三区四区视频| 国产一区二区三区精品欧美日韩一区二区三区| 午夜久久tv| 亚洲国产日韩在线一区模特| 亚洲一卡久久| 一区二区在线免费观看| 欧美精品一区二区三区四区| 午夜精品一区二区三区在线| 欧美成人亚洲| 亚洲欧美在线网| 亚洲成人资源| 国产精品日韩欧美大师| 久久综合亚州| 亚洲性感激情| 91久久精品国产91久久性色| 香蕉成人啪国产精品视频综合网| 亚洲国产精品嫩草影院| 国产精品wwwwww| 老司机67194精品线观看| 一本一道久久综合狠狠老精东影业 | 一区二区欧美视频| 蜜桃精品一区二区三区 | 亚洲成色最大综合在线| 欧美三级免费| 美女爽到呻吟久久久久| 亚洲在线第一页| 亚洲人成亚洲人成在线观看图片| 欧美一级大片在线观看| 日韩视频精品| 国产在线拍偷自揄拍精品| 欧美日韩精品一区二区三区四区| 久久av红桃一区二区小说| 一区二区欧美激情| 亚洲国产欧美日韩| 欧美α欧美αv大片| 欧美亚洲自偷自偷| 亚洲一区二区精品在线| 亚洲人成网站777色婷婷| 国产主播在线一区| 国产精品综合网站| 欧美午夜无遮挡| 欧美日韩中文在线观看| 欧美激情视频网站| 毛片一区二区三区| 久久久久久久久久久久久久一区| 亚洲女同在线| 亚洲欧美日韩国产另类专区| 99精品99| 日韩香蕉视频| 一本色道久久88亚洲综合88| 亚洲欧洲日本mm| 亚洲精品一区二区三区四区高清 | 亚洲一区二区三区777| 亚洲美女在线看| 99精品欧美一区二区三区 | 中文日韩在线视频| 亚洲伦理久久| 99国产精品久久久久久久成人热| 亚洲人成在线播放网站岛国| 亚洲国产高清自拍| 欧美高清在线一区二区| 欧美刺激性大交免费视频| 男同欧美伦乱| 亚洲成色www8888| 亚洲高清视频在线观看| 亚洲第一免费播放区| 亚洲国产乱码最新视频| 亚洲精品久久久久久久久久久久| 亚洲人成啪啪网站| 99热精品在线观看| 亚洲在线一区二区三区| 亚洲一区综合| 久久久www成人免费无遮挡大片 | 欧美影院久久久| 久久精品中文| 欧美激情偷拍| 国产精品丝袜久久久久久app| 国产日韩精品一区二区三区| 国产视频一区欧美| 亚洲第一在线综合在线| 99视频在线精品国自产拍免费观看| 日韩亚洲精品电影| 欧美一区三区三区高中清蜜桃| 久久精品国产2020观看福利| 久久综合网hezyo| 亚洲国产一区二区三区在线播 | 欧美一区二区免费观在线| 久久久久国产精品一区| 亚洲第一成人在线| 一本久久综合亚洲鲁鲁| 欧美一级片一区| 欧美大片在线观看一区| 国产精品视频网址| 亚洲成人在线免费| 亚洲欧美日韩国产成人| 国产精品自拍在线| 黑人巨大精品欧美黑白配亚洲| 亚洲成色www8888| 亚洲淫片在线视频| 久久久久.com| 亚洲午夜小视频| av不卡在线| 亚洲国产三级在线| 国产精品高清网站| 国产精品久久久久久久久果冻传媒| 欧美国产综合视频| 欧美日韩精品欧美日韩精品| 欧美日韩在线视频观看| 国产精品美女在线| 国产一区二区看久久| 激情成人亚洲| 亚洲精品一区二区三区不| av成人福利| 校园激情久久| 暖暖成人免费视频| 亚洲品质自拍| 一本一本久久a久久精品综合妖精| 在线午夜精品自拍| 久久国产日韩欧美| 欧美成人嫩草网站| 国产精品网红福利| 精品69视频一区二区三区| 亚洲国产一区在线观看| 亚洲一区二区三区精品视频| 欧美一区二区福利在线| 欧美成人免费va影院高清| 亚洲黄色在线观看| 亚洲国产精品激情在线观看| 亚洲免费在线播放| 欧美一区成人| 亚洲国产精选| 亚洲欧美日韩中文播放| 免播放器亚洲| 国产精品一二三四区| 亚洲高清免费视频| 亚洲综合色在线| 欧美成人午夜| 亚洲一区二区在| 欧美福利影院| 国内成人自拍视频| 亚洲在线观看视频| 欧美~级网站不卡| 亚洲一区二三| 欧美激情精品久久久久久蜜臀| 国产欧美日韩中文字幕在线| 99re66热这里只有精品4| 久久精品日产第一区二区三区| 最新日韩中文字幕| 久久久久久久久久久久久女国产乱| 欧美三级欧美一级|