use*_*755 2 c bit-manipulation
所以,如果我有一个32位的整数.前28位(左起)用于存储内存块的大小,接下来的两个是0,后两个是:
我想要做的是知道如何在isLast操作和isUsed操作上打开和关闭标志.
(如果我们只考虑最后两个整数(再次,我们从左开始)那么01将不是最后一个并且例如用于,例如,另一个例子是11是最后一个并且被使用,00不是最后一个并且没有被使用.)
我希望能够以一种简单的方式打开和关闭标志.我知道我需要使用包括&和|的位操作 但我不知道怎么做.
如果您需要更多问题描述,请向我提问.
And*_*nck 11
//turn on isUsed
data |= 1;
//turn off isUsed
data &= ~1;
//turn on notLast
data &= ~2;
//turn off notLast
data |= 2;
Run Code Online (Sandbox Code Playgroud)
这很简单:
/* Turn on bit 0 */
code = code | 1;
/* Turn off bit 0 */
code = code & ~1;
/* Turn on bit 1 */
code = code | 2;
/* Turn off bit 1 */
code = code & ~2;
Run Code Online (Sandbox Code Playgroud)
有关适当的术语,请参阅C或Google中的按位运算符.你可以在关于C的任何书籍或教程中找到这个.
通常,将最低有效位计为0,设置位N,需要将原始值与1 << N进行OR运算.
例如设置第1位:
val |= (1 << 1);
Run Code Online (Sandbox Code Playgroud)
要清除位N,需要将原始值与1 << N的逐位倒数进行AND运算.
例如清除第1位:
val &= ~(1 << 1);
Run Code Online (Sandbox Code Playgroud)