判斷一個整數是否爲2的n次冪

1.n與n-1按位相與
01int bool floor_7(int num)
02{
03    if (num <= 1)
04    {
05        return false;
06    }
07    else
08    {
09        return ((num & (num - 1)) == 0) ? true : false;
10    }
11}

2.不斷相除
01int Check1(int num)
02{
03    int i = 1;
04    while (true)
05    {
06        if (i > num)
07            return false;
08        if (i == num)
09            return true;
10        i = i * 2;
11    }
12 
13}

3.建一個數組,如果是32位機器,那麼2的n次冪只有32種情況,2^0, 2^1, 2^2, ......... 2^31
建立一個數組,二分法搜索數組判斷給出的整數是否能在數組中找到
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
閱讀(431) | 評論(0) | 轉發(3) |
0

上一篇:排序

下一篇:linux內核

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章