第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何計(jì)算32位整數(shù)中的設(shè)置位數(shù)?

如何計(jì)算32位整數(shù)中的設(shè)置位數(shù)?

如何計(jì)算32位整數(shù)中的設(shè)置位數(shù)?代表數(shù)字7的8位看起來(lái)像這樣:00000111設(shè)置三位。什么算法來(lái)確定32位整數(shù)中的設(shè)置位數(shù)?
查看完整描述

4 回答

?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊

在我看來(lái),“最佳”解決方案是另一個(gè)程序員(或兩年后的原始程序員)可以閱讀而沒(méi)有大量評(píng)論的解決方案。你可能想要一些已經(jīng)提供的最快或最聰明的解決方案,但我更喜歡可讀性而不是聰明。


unsigned int bitCount (unsigned int value) {

    unsigned int count = 0;

    while (value > 0) {           // until all bits are zero

        if ((value & 1) == 1)     // check lower bit

            count++;

        value >>= 1;              // shift bits, removing lower bit

    }

    return count;

}

如果你想要更快的速度(假設(shè)你記錄好以幫助你的繼任者),你可以使用表查找:


// Lookup table for fast calculation of bits set in 8-bit unsigned char.


static unsigned char oneBitsInUChar[] = {

//  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F (<- n)

//  =====================================================

    0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, // 0n

    1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, // 1n

    : : :

    4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, // Fn

};


// Function for fast calculation of bits set in 16-bit unsigned short.


unsigned char oneBitsInUShort (unsigned short x) {

    return oneBitsInUChar [x >>    8]

         + oneBitsInUChar [x &  0xff];

}


// Function for fast calculation of bits set in 32-bit unsigned int.


unsigned char oneBitsInUInt (unsigned int x) {

    return oneBitsInUShort (x >>     16)

         + oneBitsInUShort (x &  0xffff);

}

雖然這些依賴于特定的數(shù)據(jù)類型大小,因此它們不具備可移植性。但是,由于許多性能優(yōu)化無(wú)論如何都不可移植,這可能不是問(wèn)題。如果你想要便攜性,我會(huì)堅(jiān)持使用可讀的解決方案。


查看完整回答
反對(duì) 回復(fù) 2019-05-24
  • 4 回答
  • 0 關(guān)注
  • 1217 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)