unsigned int error_bits =
( X && Y )
| ( A == TRUE) << 1
| ( B == TRUE) << 2
| ( C == TRUE &&
D == TRUE) << 4;
我认为这里的一般概念是根据某些条件将32位中的每一位设置为true或false - 每个位代表某个错误。
使用上面的语法,我对于设置,移位以及在哪里/为什么感到困惑。
任何澄清都是有帮助的。
谢谢。
答案 0 :(得分:4)
你是对的。该行之后的位布局为:
Bits X-5: 0
Bit 4: (C == TRUE && D == TRUE)
Bit 3: 0
Bit 2: B == TRUE
Bit 1: A == TRUE
Bit 0: (X && Y)
从最重要到最不重要的位。 可以这样的东西更具可读性(品味):
unsigned int error_bits = 0;
if( X && Y )
error_bits |= 1;
if( A == TRUE )
error_bits |= 2;
if( B == TRUE )
error_bits |= 4;
if( C == TRUE && D == TRUE )
error_bits |= 16;
答案 1 :(得分:2)
如果A为TRUE,则A == TRUE将评估为1。 1&lt;&lt; 1是2,或者是仅设置第2位的整数(从最低有效编号)。 1&lt;&lt; 4是16,或者只设置第5位的整数。
答案 2 :(得分:1)
error_bits
值根据: