32 位寄存器,即 status_reg 有 1 个字段 (field_1 <0:31>)。为了设置和清除该寄存器,我试图获取该寄存器的掩码值。所以一般来说,获取掩码值的公式是:
mask = ((~(~0 << (hbit-lbit+1))) << lbit)
在此hbit是较高位置位,即31。而lbit是较低位置位,即0。 我期望掩码值应该是 0xFFFFFFFF。但是得到 mask= 0。任何人都可以建议 mask 有什么问题吗?
我使用的是32位系统。
最佳答案
我认为您的代码没有给您正确的掩码。如果您喜欢位 6..10 的掩码,您可以使用 (1<<(hbit-lbit+2))-1)<<lbit
关于c - 查找寄存器较高位置和较低位置的掩码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44498591/