C语言语句YPR[0]=(BUF[1]<<8|BUF[2]);如何理解?


这是一个赋值语句,把等式右边的值赋给左边;

先来看左边是怎么运算的,

由于移位运算符<<的优先级大于位运算符|,所以先计算BUF[1]左移八位,然后再上BUF[2]

或的操作可以理解为两个数相加;通俗理解的话可以举个列子,

假设BUF[1]的值为0000 0001b(为方便描述,故用二进制表示) ,左移八位后变成10000 0000b   ,BUF[2]的值为1  ,然后两者相加变为10000 0001 b

 

这是算术优先级的问题吧。这两个都是双目运算符,而移位运算符的优先级是大于位运算符的,所以你只要先将BUF[1]<<8,然后结果或上BUF[2]

 

数据拆包发送后又合成吗/, 串口通信一般就是8位, 想发送个16位的数据就需要拆包,高八位 第八位装在两个8位的变量里。接收到之后再进行合成。 你的代码就是将BUF[1]中的数作为高位,BUF[2]中的数作为低位 ,合成的位数放进YRR[0]

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM