欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3742|回復: 4
收起左側

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

[復制鏈接]
ID:374198 發表于 2019-8-5 17:39 | 顯示全部樓層 |閱讀模式
請教一下,YPR[0]=(BUF[1]<<8|BUF[2]); 這句話在c語言里怎樣理解》???
回復

使用道具 舉報

ID:377268 發表于 2019-8-5 22:23 | 顯示全部樓層
數據拆包發送后又合成嗎/, 串口通信一般就是8位, 想發送個16位的數據就需要拆包,高八位 第八位裝在兩個8位的變量里。接收到之后再進行合成。 你的代碼就是將BUF[1]中的數作為高位,BUF[2]中的數作為低位 ,合成的位數放進YRR[0]
回復

使用道具 舉報

ID:529540 發表于 2019-8-6 15:38 | 顯示全部樓層
額,就這樣理解,按語句一步步運算啊,可以直接定義幾個值然后按這樣運算然后看看結果是怎么樣的,加深印象啊,可以幫助你更深入的了解這語句的意思,會有什么樣的結果,你就知道為什么怎么寫了。
回復

使用道具 舉報

ID:362259 發表于 2019-8-6 18:09 | 顯示全部樓層
這是算術優先級的問題吧。這兩個都是雙目運算符,而移位運算符的優先級是大于位運算符的,所以你只要先將BUF[1]<<8,然后結果或上BUF[2]
回復

使用道具 舉報

ID:596346 發表于 2019-8-6 20:55 | 顯示全部樓層
這是一個賦值語句,把等式右邊的值賦給左邊;先來看左邊是怎么運算的,由于移位運算符<<的優先級大于位運算符|,所以先計算BUF[1]左移八位,然后再或上BUF[2],或的操作可以理解為兩個數相加;通俗理解的話可以舉個列子,假設BUF[1]的值為0000 0001b(為方便描述,故用二進制表示) ,左移八位后變成10000 0000b   ,BUF[2]的值為1  ,然后兩者相加變為10000 0001 b
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表