美文网首页经典的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中的位操作,了解这么多就够了

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

  • IO库

    1 C++缓冲区 在学习标准IO库之前,我们先了解C++中缓冲区的使用。关于操作系统中缓冲区的学习与理解,请查看操...

  • C 位操作

  • C语言基础及指针⑨联合体与枚举

    接续上篇C语言基础及指针⑧文件IO 在上篇中 , 我们初步了解了C语言的IO操作 , 编写IO操作的大致流程: 文...

  • ToLua的Example示例学习笔记11_Delegate

    展示了Lua对C#中的委托类型的操作。 「1」代码 操作代码如下: c#代码如下: 「2」需要了解的部分 这个代码...

  • 位操作

    c++中位操作操作符 这些位操作符只能用于整形的操作,其他会编译报错。位操作符的运算优先级比较低,因为尽量使用括号...

  • C++位操作

    位操作 基本的位操作符有与、或、异或、取反、左移、右移这6种。在这6种操作符,只有取反是单目运算符,其它5种都是双...

  • ToLua的Example示例学习笔记10_Enum

    展示了Lua对C#中的Enum对象的几种基本访问方法。 「1」代码 操作代码如下: c#代码如下: 「2」需要了解...

  • [C语言]你真的了解C语言吗之位运算操作

    自C语言盛行以来,豪杰并起,执掌一方者不可胜数,Java比于C++,则年轻而效低,然Java遂能克C++,以弱为强...

  • 史上最全Linux目录结构说明

    Linux和Windows操作系统中的文件系统些不同,在学习使用linux之前,能够了解这个不同之处助于后续的学习...

网友评论

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

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