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

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

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

再說第二個問題
其實有了第一個問題的思路,這個問題就更好解決了,先判斷一個數是否為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); // 相當于input對2^highestBit求余
    highestBit += ( mask > 0 );

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

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

問題二的解法是網上看來的,因為浮點數前1+8位記錄了符號和指數,求出指數再用移位得到最小的2的N次方
還看到另一種解法:fb 7的malloc.c里面的實現:
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);
}
這個似乎效率也不差,而且沒有bug,以上供樓主參考  回復  更多評論
  
# re: 兩個小問題
2012-10-01 17:56 | 梨樹陽光
@Eric
非常感謝  回復  更多評論
  
# re: 兩個小問題
2012-10-01 20:01 | yrj
Ref: the FXT library and the fxtbook: "Matters Computational" http://www.jjj.de/fxt/  回復  更多評論
  
# re: 兩個小問題
2012-10-08 18:20 | luckyC++
@Eric
原諒我的無知。勞煩大俠告知fb7是什么?望不吝賜教,在此謝過!  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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精品热视频| 亚洲综合首页| 永久555www成人免费| 另类天堂视频在线观看| 奶水喷射视频一区| 国产精品99久久久久久久vr | 影音先锋日韩精品| 亚洲成在人线av| 欧美色中文字幕| 久久精品久久99精品久久| 久久亚洲精品欧美| 亚洲视频在线观看三级| 欧美一级播放| 亚洲精品免费在线观看| 亚洲深夜福利网站| 亚洲第一福利视频| 99热在线精品观看| 韩国成人精品a∨在线观看| 欧美激情a∨在线视频播放| 欧美午夜www高清视频| 久久在线观看视频| 国产精品a级| 欧美成人国产| 国产欧美日韩另类一区| 欧美激情视频免费观看| 国产精品综合网站| 亚洲人成网站在线播| 国产欧美另类| 亚洲久久成人| 亚洲丶国产丶欧美一区二区三区| 99re这里只有精品6| 韩国亚洲精品| 亚洲一级在线观看| 洋洋av久久久久久久一区| 久久精品免视看| 欧美亚洲在线| 欧美日韩亚洲成人| 亚洲国产小视频| 国内精品伊人久久久久av影院| 亚洲精品一区二区三区福利| 在线观看欧美日韩| 欧美一区二区三区在线视频| 99视频在线观看一区三区| 久久免费国产精品1| 久久精品国产99国产精品| 国产精品福利在线| 亚洲精品久久久久久久久久久久 | 亚洲欧美中文日韩v在线观看| 蜜桃精品久久久久久久免费影院| 久久久精品2019中文字幕神马| 国产精品久久久久婷婷| 一本色道久久综合一区| 一本色道久久综合亚洲精品按摩| 免费成人激情视频| 欧美寡妇偷汉性猛交| 国内自拍视频一区二区三区| 欧美亚洲尤物久久| 久久成人免费电影| 国产嫩草一区二区三区在线观看| 亚洲视频网站在线观看| 午夜精品视频在线观看| 国产精品女主播| 亚洲性夜色噜噜噜7777| 欧美一区二区视频免费观看| 国产精品专区一| 欧美中文在线观看国产| 开元免费观看欧美电视剧网站| 黄色成人av在线| 蜜臀99久久精品久久久久久软件| 欧美成人首页| 99国内精品久久| 国产精品v欧美精品v日韩| 亚洲综合色视频| 久久精品综合一区| 亚洲国产第一页| 欧美日韩123| 亚洲一区欧美一区| 久久一二三区| 日韩亚洲国产精品| 国产精品视频精品视频| 欧美一区二区三区喷汁尤物| 免费视频一区二区三区在线观看| 最新日韩av| 国产精品黄页免费高清在线观看| 香蕉成人啪国产精品视频综合网| 美女视频网站黄色亚洲| 亚洲美洲欧洲综合国产一区| 欧美日韩在线视频一区二区| 欧美亚洲网站| 亚洲国产专区| 性欧美暴力猛交69hd| 在线不卡中文字幕| 欧美日韩一二三区| 久久精品国亚洲| 亚洲精品视频一区| 久久久久一区二区| 一本色道久久综合亚洲精品小说| 国产精品自拍一区| 欧美激情亚洲国产| 亚洲欧美一区二区在线观看| 亚洲成在人线av| 欧美中日韩免费视频| 亚洲精品在线观| 国产视频在线观看一区二区三区| 欧美大学生性色视频| 香蕉久久精品日日躁夜夜躁| 91久久在线视频| 农夫在线精品视频免费观看| 亚洲免费视频成人| 亚洲麻豆av| 亚洲电影免费在线观看| 国产区日韩欧美| 国产精品v日韩精品| 欧美极品欧美精品欧美视频| 久久精品视频导航| 亚洲午夜小视频| 亚洲精品孕妇| 亚洲第一天堂无码专区| 久久国产精品久久久| 亚洲一级在线观看| 一区二区高清视频| 亚洲精品免费观看| 在线国产亚洲欧美| 韩国av一区二区三区四区| 国产精品视频网址| 国产精品国产三级国产普通话99| 欧美黄色片免费观看| 免费成人av| 媚黑女一区二区| 久久性天堂网| 久久一二三国产| 久久久久欧美| 久久这里只精品最新地址| 久久国产精品99精品国产| 午夜亚洲性色视频| 亚洲资源在线观看| 亚洲制服av| 午夜国产欧美理论在线播放| 亚洲一区二区三区影院| 亚洲婷婷国产精品电影人久久| 日韩小视频在线观看| 亚洲视频专区在线| 亚洲欧美一区二区三区极速播放| 一区二区高清| 亚洲欧美精品在线观看| 亚洲综合电影一区二区三区| 午夜精品福利一区二区三区av | 欧美+亚洲+精品+三区| 狂野欧美一区| 亚洲二区视频| 一本大道久久a久久精品综合| 一区二区三区你懂的| 亚洲无线视频| 欧美专区日韩视频| 另类图片国产| 欧美私人网站| 国产一级久久| 亚洲美女尤物影院| 亚洲综合色在线| 久久亚洲春色中文字幕| 欧美96在线丨欧| 日韩网站在线看片你懂的| 亚洲伊人伊色伊影伊综合网| 久久精品国产免费看久久精品| 美女视频一区免费观看| 欧美日韩国产另类不卡| 国产精品日韩一区| 在线观看成人网| 99综合电影在线视频| 午夜精品久久久久久久久久久久久 | 亚洲第一精品福利| 99亚洲精品| 久久久亚洲精品一区二区三区| 欧美大色视频| 国产欧美日韩伦理| 亚洲精品一二| 欧美资源在线| 亚洲激情成人网| 欧美一区二区网站| 欧美久久电影| 精品不卡视频| 欧美高清不卡在线| 久久婷婷国产麻豆91天堂| 亚洲国产精品第一区二区三区| 亚洲美女电影在线| 久久精品亚洲一区| 国产精品福利在线观看| 亚洲国产精品精华液2区45| 亚洲一区免费观看| 欧美激情女人20p| 欧美一区二区视频网站| 欧美日本高清| 亚洲国产日韩欧美在线99| 久久9热精品视频|