首頁(yè) > 評(píng)測(cè) > 【技術(shù)分享】在紫色派上實(shí)現(xiàn)邏輯位操作函數(shù)的配置
【技術(shù)分享】在紫色派上實(shí)現(xiàn)邏輯位操作函數(shù)的配置
- [導(dǎo)讀]
- 本帖最后由 jinglixixi 于 2023-5-12 10:34 編輯 #申請(qǐng)?jiān)瓌?chuàng)# @21小跑堂紫色派是一款安裝LINUX軟件即可進(jìn)行其學(xué)習(xí)與編程測(cè)試的開(kāi)發(fā)板,其外觀如圖1所示。1.jpg (39.95 KB )下載附件2023-5-12 10:00 上傳圖1 紫
本帖最后由 jinglixixi 于 2023-5-12 10:34 編輯
#申請(qǐng)?jiān)瓌?chuàng)# @21小跑堂
紫色派是一款安裝LINUX軟件即可進(jìn)行其學(xué)習(xí)與編程測(cè)試的開(kāi)發(fā)板,其外觀如圖1所示。
圖1 紫色派
為使其具有溫度檢測(cè)與顯示功能,需為它配置一個(gè)顯示屏和一個(gè)溫度傳感器。
1. 位邏輯處理函數(shù)
在紫色派所提供的LINUX中,它只支持條件邏輯判別,卻并沒(méi)有提供相應(yīng)的位邏輯函數(shù),因此在程序設(shè)計(jì)中往往會(huì)受到很大的牽制。
由于在OLED屏的驅(qū)動(dòng)程序中要用到它,為此特意為其補(bǔ)充相應(yīng)的位邏輯處理函數(shù),其內(nèi)容有:與邏輯函數(shù)、或邏輯函數(shù)、非邏輯函數(shù)以及位移處理函數(shù)等。
1)與邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行與邏輯運(yùn)算,它是一個(gè)2目操作運(yùn)算,其數(shù)據(jù)類型為字節(jié)型。
該函數(shù)的內(nèi)容如下:
在完成該函數(shù)的編輯后,將其存入文件and.sh即可。
為驗(yàn)證其正確性,按圖2所示鍵入指令source ./and.sh即可運(yùn)行該函數(shù)。其中參與運(yùn)算的2個(gè)操作數(shù)為0xfc和0x38,
所得到結(jié)果為56。由于56=0X38,故0xfc&0x38=0x38是正確的。
圖2 功能驗(yàn)證
若以二進(jìn)制的形式來(lái)表示,其結(jié)果如圖3所示,該形式更便于驗(yàn)證其正確性。
圖3 二進(jìn)制表示
2)或邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行或邏輯運(yùn)算,它是一個(gè)2目操作運(yùn)算,其數(shù)據(jù)類型為字節(jié)型。
該函數(shù)的內(nèi)容如下:
在完成該函數(shù)的編輯后,將其存入文件or.sh即可。
為驗(yàn)證其正確性,需鍵入指令source ./or.sh即可運(yùn)行該函數(shù)。為了增強(qiáng)使用的靈活性,故2個(gè)操作數(shù)是通過(guò)按鍵來(lái)輸入的。以操作數(shù)0xfc和0x38為例,其運(yùn)算結(jié)果為56。
由于253=0Xfd,故0xfc|0xf1=0xfd是正確的。
圖4 功能驗(yàn)證
若以二進(jìn)制的形式來(lái)表示,其結(jié)果如圖5所示。
圖5 二進(jìn)制表示
3)異或邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行異或邏輯運(yùn)算,它是一個(gè)2目操作運(yùn)算,其數(shù)據(jù)類型為字節(jié)型。
該函數(shù)的內(nèi)容如下:
在完成該函數(shù)的編輯后,將其存入文件xor.sh即可。
為驗(yàn)證其正確性,需鍵入指令source ./xor.sh即可運(yùn)行該函數(shù)。在輸入2個(gè)操作數(shù)后,輸入指令hs_xor即可達(dá)到結(jié)果。以操作數(shù)0xfc和241為例,其運(yùn)算結(jié)果為13。
由于241=0Xf1,故0xfc^0xf1=0x0d=13是正確的。
圖6 功能驗(yàn)證
4)取反邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行邏輯取反運(yùn)算,它是一個(gè)單目操作運(yùn)算,其數(shù)據(jù)類型為字節(jié)型。
該函數(shù)的內(nèi)容如下:
在完成該函數(shù)的編輯后,將其存入文件not.sh即可。
為驗(yàn)證其正確性,需鍵入指令source ./not.sh即可運(yùn)行該函數(shù)。由于它是單目運(yùn)算,故只鍵入1個(gè)操作數(shù)即可。以操作數(shù)0xfc為例,其運(yùn)算結(jié)果為3,說(shuō)明函數(shù)正確。
圖7 功能驗(yàn)證
5)移位操作函數(shù)
該函數(shù)的作用是按位進(jìn)行數(shù)據(jù)移動(dòng),它是一個(gè)單目操作運(yùn)算,其數(shù)據(jù)類型為字節(jié)型。在此類函數(shù)中,包括左移、右移和位交換。
(1) 左移
左移函數(shù)的表達(dá)式為:y=a<<n (a為整數(shù)型變量,n=0~7)
實(shí)現(xiàn)左移的函數(shù)方式為:y=a*(2^n) ,2^n表示2的n次方。
實(shí)現(xiàn)左移的函數(shù)內(nèi)容為:
在完成該函數(shù)的編輯后,將其存入文件yw.sh即可。
為驗(yàn)證其正確性,需鍵入指令source ./ yw.sh即可運(yùn)行該函數(shù)。該函數(shù)是雙目運(yùn)算,故要鍵入2個(gè)操作數(shù)。以操作數(shù)0x85為例,其左移2位的結(jié)果為0x224,說(shuō)明函數(shù)正確。
(2) 右移
右移函數(shù)的表達(dá)式為:y=a>>n (a為整數(shù)型變量,n=0~7)
實(shí)現(xiàn)右移的函數(shù)方式為:y=a/(2^n)
實(shí)現(xiàn)右移的函數(shù)內(nèi)容為:
在完成該函數(shù)的編輯后,將其存入文件yw.sh即可。
為驗(yàn)證其正確性,需鍵入指令source ./ yw.sh即可運(yùn)行該函數(shù)。該函數(shù)是雙目運(yùn)算,故要鍵入2個(gè)操作數(shù)。以操作數(shù)0x85為例,其右移2位的結(jié)果為0x21,說(shuō)明函數(shù)正確。
(3) 位交換
在數(shù)據(jù)操作處理中,常會(huì)涉及半字節(jié)的操作,比如用字節(jié)數(shù)據(jù)的高4位或低4位,或交換數(shù)據(jù)的高、低4位等。
對(duì)提取的高4位測(cè)試為:
對(duì)提取的低4位測(cè)試為:
這樣我們就基本上接近了關(guān)于位操作的函數(shù)設(shè)計(jì)及處理方法問(wèn)題,盡管這些問(wèn)題很基礎(chǔ),但它卻是很重要,也很使用,希望它對(duì)大家能有所裨益!
- 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!
網(wǎng)友評(píng)論
- 聯(lián)系人:巧克力娃娃
- 郵箱:board@21ic.com
- 我要投稿
-
歡迎入駐,開(kāi)放投稿
行業(yè)新聞
熱門標(biāo)簽
論壇活動(dòng)
more+
公開(kāi)課
more+
項(xiàng)目外包
more+
- NRF52810藍(lán)牙數(shù)字耳機(jī)找人定制
預(yù)算:¥30005天前
- 125KW模塊式PCS軟硬件外包開(kāi)發(fā)
預(yù)算:¥1100000015小時(shí)前
- 12V汽車啟動(dòng)電源項(xiàng)目BMS設(shè)計(jì)
預(yù)算:¥50000023小時(shí)前
- 數(shù)據(jù)可視化軟件 開(kāi)發(fā)
預(yù)算:¥5000023小時(shí)前
- PLC項(xiàng)目調(diào)試修改
預(yù)算:¥100001天前
- 起動(dòng)電機(jī)控制器開(kāi)發(fā)
預(yù)算:¥1100001天前