美文网首页经典的C
关于C中的位操作,了解这么多就够了

关于C中的位操作,了解这么多就够了

作者: 左图右码 | 来源:发表于2022-03-10 13:08 被阅读0次

    没有对C语言中位的理解,你一定不会用std::bitset,如果理解里C中的位操作,就真心不必再使用std::bitset了

    #include "iostream"
    #include <iomanip>
    
    void printBits(unsigned int value)
    {
        constexpr int size = 8 * sizeof(unsigned);
        constexpr int mask = (1<<(size - 1));
    
        std::cout << std::setw(2);
        for(int i = 1;i <= size;++i)
        {
            std::cout << ((mask & value) ? '1' : '0');
            value <<= 1;
            if(i%8 == 0)
                std::cout <<' ';
        }
    }
    
    #define PRINT1(a) std::cout << std::setw(8) << #a" ="; \
            printBits(a); \
            std::cout << std::endl;
    
    
    int main(int,char**)
    {
        unsigned int a = 0xff;
        unsigned int b = 3;
        PRINT1(a);
        PRINT1(b);
        PRINT1(a&b);
        PRINT1(a|b);
        PRINT1(a^b);
        PRINT1(a&~b);
        PRINT1(a^=b);
        PRINT1(a^=b);
        return 0;
    }
    

    上面的程序的输出如下:


    view.png

    相关文章

      网友评论

        本文标题:关于C中的位操作,了解这么多就够了

        本文链接:https://www.haomeiwen.com/subject/klmfdrtx.html