一個字節中存在着多少個二進位1

一個字節中二進位1的個數

兩個相似的方法,一個右移所查看的字節;一個查看左移1.


#include <stdio.h>

int getOneBits(unsigned char num)
{
    int count = 0;
    for(int i = 0; i < 8; i++)
    {
        if((num & (1 << i)) != 0)
            count++;
    }
    
    return count;
}

int main(void)
{
    printf("%d\n", getOneBits((unsigned char)10));
    return 0;
}


#include <stdio.h>

int getOneBits(unsigned char num)
{
    int count = 0;
    for(int i = 0; i < 8; i++)
    {
        if(((num>>i) & 1) != 0)
            count++;
    }
    
    return count;
}

int main(void)
{
    printf("%d\n", getOneBits((unsigned char)10));
    return 0;
}

在網上看到有查表法,效率高,貌似比較麻煩:

//將0x00~0xFF對應存在二進位0的個數保存在unsigned int C[256]中
const int C[256]={8,7,7,6,7,6,6,5,7,……,1,0};
//然後
int ZeroBitsCount(BYTE b) {return C[(unsigned int)b];}


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