如何以C语言存储价值?

这个问题在这里已经有了答案:

  • 你如何设置,清除和切换一个位? 26个答案

  • 您需要计算该字节内的字节偏移量和位掩码。

  • 设置位:按位或屏蔽
  • 清除该位:用补码掩码按位与
  • 读取该位:返回按位与字节和掩码
  • 代码:

    void set_bit(char *buf, int bit, int val)
    {
        int byte = bit / 8;
        char mask = 1 << (bit % 8);
        if (val)
            buf[byte] |= mask;
        else
            buf[byte] &= ~mask;
    }
    
    int get_bit(char *buf, int bit)
    {
        int byte = bit / 8;
        char mask = 1 << (bit % 8);
        return buf[byte] & mask ? 1 : 0; 
    }
    

    示例:将位17设置为1.字节偏移量为17/8 = 2 。 位偏移量为17%8 = 1 。 位掩码是由位偏移量左移1产生的:结果为00000010二进制。 按位或byte[2] :所有位保持不变,除非屏蔽位为1。

    链接地址: http://www.djcxy.com/p/28807.html

    上一篇: How can I store value in bit in C language

    下一篇: toggle a bit at ith positon