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