我对C编程很新,我遇到了掩码.有人可以向我解释位屏蔽的一般概念和功能吗?非常感谢例子.
假设我有一个类似于1010XXXX的字节,其中X值可以是任何值.我想将低4位设置为特定模式,比如1100,同时保持高4位不受影响.如何在C中以最快的速度完成这项工作?
我想在32/64位数据字段中替换位/位(大于1)而不影响其他位.例如:
我有一个64位寄存器,其中第5位和第6位可以取值0,1,2,3.
5:6
0 0
0 1
1 0
1 1
Run Code Online (Sandbox Code Playgroud)
现在,当我读取寄存器时,我得到值0x146(0001 0 10 0 0110).现在我想将第5位和第6位的值更改为01.(现在它是10,十进制是2,我想要在没有其他位受到影响的情况下将其替换为1 e 01)并仅在修改了位5和6的情况下写回寄存器(因此在更改后变为126)
我试过这样做
reg_data=0x146
reg_data |= 1 << shift (shift in this case is 5)
Run Code Online (Sandbox Code Playgroud)
如果我在位5和6处执行该值将变为11(0x3)而不是01(0x1),这是我想要的.
设置一点是可以的,但不止一点,我发现它有点困难.
任何建议都非常感谢.