【发布时间】:2015-07-09 15:47:27
【问题描述】:
我已经有一段时间没有用 C 编程并做过任何位掩码了。
我的问题是,在我的设备启动过程中,我的设备驱动程序正在初始化寄存器中的位,但假设其中只有一些是可变的。我知道哪些位是可变的,并且我知道它们应该是什么取决于内存位置。
例如: $0x00AA 应该始终具有格式 0b101XXX01,其中 X 是可变的,其他一切都应该保持不变。 该函数当前接收一个地址和一个值,并将该值设置为该地址。我需要修改它,这样即使函数在 0b11111111 中传递给寄存器 $0x00AA,它也应该设置为 0b10111101。 同样,对于 0b00000000 到 0b10100001。
【问题讨论】:
-
您可以为此使用按位运算符(
|、&、~),尤其是赋值运算符版本(|=、&=)。 -
你的意思是你想要一个按位与?
-
您需要检测传入的地址是您的受保护地址之一,在这种情况下,在设置之前对值应用掩码。您有多少个受保护的地址,它们是否在其他地方使用?