我有一个简单的问题,我似乎无法理解。
我正在为数据记录器创建一个串行解析器,它发送一个串行流。根据产品的文档,我会说明计算,我不明白。
Lateral = Data1 And 0x7F + Data2 / 0x100
If (Data1 And 0x80)=0 Then Lateral = -Lateral
Data1
和0x7f
的含义是什么?我知道7F
是127
,但除此之外,我并不理解与And声明的结合。
真正的公式是什么样的?
答案 0 :(得分:1)
按位与 - 当且仅当在两个输入中设置相应位时,才设置输出中的位。
由于您的代码表明您正在使用C语言,因此您可以使用&amp ;;执行按位AND。操作
(注意,0x7F是01111111,0x80是二进制的10000000,因此与它们的AND运算分别对应于提取低7位并提取字节的高位。)
答案 1 :(得分:0)
第一句话
Lateral = Data1 And(&) 0x7f + Data2/ 0x100
表示取Data1
(数据和0x7f)的幅度并将Data2/256
Data1
并将其分配给Lateral
。