【发布时间】:2018-04-18 08:24:08
【问题描述】:
我正在尝试理解以下代码的 sn-p:
unsigned char state = portStates[portNumber];
int bitValue = (state >> 7) & 0x1;
它在最不重要的位上进行按位与
state,对吧?如果它返回真(即该位被设置),那么
数字是奇数。否则,它是均匀的。我说的对吗?
谢谢
【问题讨论】:
-
它只是测试值的第 7 位。
-
奇数甚至是位 0,而不是位 7。这只是从状态中提取位 #7,仅此而已。
-
是的,这会提取状态的第 7 位。如果第 7 位为 1,则返回 1。否则为 0。
-
你不会移动一个对象。您获取它的 value,然后将该 value 移位,然后将得到的 value 与
1进行位与运算。然后将生成的 value 视为布尔值并将其分配给整数 object。 -
the_naive,如果代码是
int bitValue = (state /128) %2;,会更容易理解吗?
标签: c bitwise-operators byte-shifting