0

我有一个可能很简单的问题,我似乎无法理解。

我正在为发送串行流的数据记录器创建一个串行解析器。在产品的文档中说明了计算,我不明白。

Lateral = Data1 And 0x7F + Data2 / 0x100
If (Data1 And 0x80)=0 Then Lateral = -Lateral

Data1和是什么0x7f意思?我知道那7F127,但除此之外我不明白与 And 语句的组合。

真正的公式会是什么样子?

4

2 回答 2

1

按位与 - 当且仅当在两个输入中都设置了相应的位时,才会设置输出中的位。

由于您的标签表明您正在使用 C 语言,您可以使用 & 运算符执行按位与。

(注意 0x7F 是 01111111 和 0x80 是 10000000 在二进制中,所以与它们分别对应于提取一个字节的低七位和提取高位。)

于 2013-03-22T07:54:29.357 回答
0

第一句话 Lateral = Data1 And(&) 0x7f + Data2/ 0x100

表示取Data1(Data 和 0x7f) 的大小,并加上Data2/256

第二句检查符号 odData1并将其分配给Lateral

于 2013-03-22T08:08:23.430 回答