【发布时间】:2019-12-03 12:07:02
【问题描述】:
我只是在 C(初学者)中试验位域。 假设我有一个整数:
uint8 myBitfield
如何检查除最低有效位之外的所有位都已设置。
我认为这会起作用:
if ((myBitfield & 0xFE) == 1) // 0xFE = 0b11111110
{
/*yes all bits except the Least Significant is set*/
}
有什么建议吗?
【问题讨论】:
-
提示:尝试一个应该通过这个的位域的例子,看看当你与 0xFE 时你实际得到了什么。你不会得到 1...
-
if 指令应该是
if ((myBitfield & 0xFE) == 0xFE)。你没那么远。请注意,测试的最后一位可能是 0 或 1。这就是你想要的吗? -
if (myBitField == 0xFE) {} 确保设置了除 LSB 之外的所有位。有点怀疑这就是你的意思。
标签: c bit-fields