我有一个可能很简单的问题,我似乎无法理解。
我正在为发送串行流的数据记录器创建一个串行解析器。在产品的文档中说明了计算,我不明白。
Lateral = Data1 And 0x7F + Data2 / 0x100
If (Data1 And 0x80)=0 Then Lateral = -Lateral
Data1
和是什么0x7f
意思?我知道那7F
是127
,但除此之外我不明白与 And 语句的组合。
真正的公式会是什么样子?
我有一个可能很简单的问题,我似乎无法理解。
我正在为发送串行流的数据记录器创建一个串行解析器。在产品的文档中说明了计算,我不明白。
Lateral = Data1 And 0x7F + Data2 / 0x100
If (Data1 And 0x80)=0 Then Lateral = -Lateral
Data1
和是什么0x7f
意思?我知道那7F
是127
,但除此之外我不明白与 And 语句的组合。
真正的公式会是什么样子?
按位与 - 当且仅当在两个输入中都设置了相应的位时,才会设置输出中的位。
由于您的标签表明您正在使用 C 语言,您可以使用 & 运算符执行按位与。
(注意 0x7F 是 01111111 和 0x80 是 10000000 在二进制中,所以与它们分别对应于提取一个字节的低七位和提取高位。)
第一句话
Lateral = Data1 And(&) 0x7f + Data2/ 0x100
表示取Data1
(Data 和 0x7f) 的大小,并加上Data2/256
第二句检查符号 odData1
并将其分配给Lateral
。