c - C中的位操作

标签 c bit-manipulation

所以如果我有一个 32 位的整数。前 28 位(左起)用于存储内存块的大小,接下来的两位是 0,最后两位是:

  • 存储如果它是最后一个节点然后
  • 存储是否使用(分别)。

  • 我想做的是知道如何在 isLast 操作和 isUsed 操作上打开和关闭标志。

    (如果我们只考虑最后两个整数(同样,我们从左开始),那么 01 将不是最后一个并且被使用,例如,还有一个例子是 11 是最后一个并且被使用,00 不是最后一个并且没有被使用。)

    我希望能够以一种简单的方式打开和关闭标志。我知道我需要使用位操作,包括 & 和 |但我不确定如何。

    如果您需要对问题的更多描述,请向我提问。

    最佳答案

    //turn on isUsed
    data |= 1;
    //turn off isUsed
    data &= ~1;
    //turn on notLast
    data &= ~2;
    //turn off notLast
    data |= 2;
    

    关于c - C中的位操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873505/

    相关文章:

    c - 写入器关闭后管道/FIFO 读取尝试

    java - 设置antlr ide和antlr包

    c# - Bitwise-or 似乎隐式转换为 long。这可以避免吗?

    检查位否定数中设置的位数是否为 2 或更多

    C从txt文件中提取除空格和标点符号之外的单词

    C 调用约定 : who cleans the stack in variadic functions vs normal functions?

    c++ - 与SPI NAND闪存(STM32L4、QSPI)的通信问题

    c++ - 以位计数递增顺序遍历整数的每个位掩码

    c - C : Checking if a number is positive 中的按位运算

    python - 位运算产生无符号大数而不是负数