错误代码OR'd在一起

时间:2013-04-18 04:22:27

标签: bit-manipulation

我无法搞清楚这一点,我可以使用一些帮助。因此,某些硬件的数据表显示“报告的错误代码是每个检测到的错误的OR'd结果。错误代码在表3中给出。”

表3是

0x00 -> No error
0x01 -> Power error
0x02 -> Receiver error
0x03 -> Transmitter error

然后数据表显示了一个例子。

Example :
(ETV001T0C) + checksum -> Test status 0x0C (Rx and Tx error)

0C是错误字节。 所以我的第一个问题是 - 我的数学错了吗?我不知道他们从哪里获得0C。我很确定0x02 | 0x03 = 0x03。第二,即使它是0C,你怎么弄清楚那里有什么错误?

1 个答案:

答案 0 :(得分:2)

该表实际上给出了位移位,正如<<运算符所使用的那样。

1 << 0x00 = 0001b (?) -> No error
1 << 0x01 = 0010b -> Power error
1 << 0x02 = 0100b -> Receiver error
1 << 0x03 = 1000b -> Transmitter error

使用python作为计算器:

>>> (1 << 2) | (1 << 3)
12
>>> hex((1 << 2) | (1 << 3))
'0xc'