从C++11到C++20(四)统计某个数目中1的个数

    技术2022-07-10  94

    代码链接见:https://wandbox.org/permlink/sIdpRyLe4utkecEq

    C++20提供了一个新的 <bit> 头文件用于提供一些位运算,其中popcount可用于统计一个数目中1的个数。 如果你想统计一个2/8/16进制数目中1的个数,这个函数就非常方便了:

    #include <bit> #include <bitset> #include <cstdint> #include <initializer_list> #include <iostream> int main() { for (std::uint8_t i : { 0, 0b11111111, 0b00011101 }) { std::cout << "popcount(0b" << std::bitset<8>(i) << ") = " << std::popcount(i) << '\n'; } } /* output: popcount(0b00000000) = 0 popcount(0b11111111) = 8 popcount(0b00011101) = 4 */
    Processed: 0.020, SQL: 9