|
|
1
2
而节点中的选中值可以是0、1或2:
这真让人困惑。理想情况下,这些将是相同的常数集。 要更新:
|
|
|
2
1
基本上,这样的表达:
这是违反直觉的。您通常通过将常数1向左移位来测试位,因为这样可以使移位的位数与位的索引相同,将LSB(最右边的)位计算为位号0。 此外,使用==比较测试结果也没有意义,因为它总是为0或非零,所以如果您的语言需要,您至少可以测试一些更简单的东西。 在C和C++中,默认情况下,将非零整数解释为“true”,比较完全是多余的,只是用来引入杂波、重复和增加bug的风险。 我会这样写:
额外的括号应该有助于更清楚地说明事物是如何分组的。请注意“2<<1”是如何改写为“1<<2”的。这不仅仅是一个“开关”,您需要计算适当的移位以获得相同的位值,在这种情况下为4。 当然,您可以将位测试放入子例程并调用它们,以使代码更具可读性。 |