首頁 > 評測 > 【技術(shù)分享】在紫色派上實現(xiàn)邏輯位操作函數(shù)的配置

【技術(shù)分享】在紫色派上實現(xiàn)邏輯位操作函數(shù)的配置

  
  • 作者:
  • 來源:
  • [導(dǎo)讀]
  • 本帖最后由 jinglixixi 于 2023-5-12 10:34 編輯 #申請原創(chuàng)# @21小跑堂紫色派是一款安裝LINUX軟件即可進(jìn)行其學(xué)習(xí)與編程測試的開發(fā)板,其外觀如圖1所示。1.jpg (39.95 KB )下載附件2023-5-12 10:00 上傳圖1 紫

本帖最后由 jinglixixi 于 2023-5-12 10:34 編輯

#申請原創(chuàng)# @21小跑堂

紫色派是一款安裝LINUX軟件即可進(jìn)行其學(xué)習(xí)與編程測試的開發(fā)板,其外觀如圖1所示。
圖1 紫色派
為使其具有溫度檢測與顯示功能,需為它配置一個顯示屏和一個溫度傳感器。
1. 位邏輯處理函數(shù)
在紫色派所提供的LINUX中,它只支持條件邏輯判別,卻并沒有提供相應(yīng)的位邏輯函數(shù),因此在程序設(shè)計中往往會受到很大的牽制。
由于在OLED屏的驅(qū)動程序中要用到它,為此特意為其補(bǔ)充相應(yīng)的位邏輯處理函數(shù),其內(nèi)容有:與邏輯函數(shù)、或邏輯函數(shù)、非邏輯函數(shù)以及位移處理函數(shù)等。
1)與邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行與邏輯運算,它是一個2目操作運算,其數(shù)據(jù)類型為字節(jié)型。


該函數(shù)的內(nèi)容如下:
在完成該函數(shù)的編輯后,將其存入文件and.sh即可。
為驗證其正確性,按圖2所示鍵入指令source ./and.sh即可運行該函數(shù)。其中參與運算的2個操作數(shù)為0xfc和0x38,

 

所得到結(jié)果為56。由于56=0X38,故0xfc&0x38=0x38是正確的。
2  功能驗證

 

若以二進(jìn)制的形式來表示,其結(jié)果如圖3所示,該形式更便于驗證其正確性。
圖3  二進(jìn)制表示
2)或邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行或邏輯運算,它是一個2目操作運算,其數(shù)據(jù)類型為字節(jié)型。

 

該函數(shù)的內(nèi)容如下:
在完成該函數(shù)的編輯后,將其存入文件or.sh即可。
為驗證其正確性,需鍵入指令source ./or.sh即可運行該函數(shù)。為了增強(qiáng)使用的靈活性,故2個操作數(shù)是通過按鍵來輸入的。以操作數(shù)0xfc和0x38為例,其運算結(jié)果為56。

 

由于253=0Xfd,故0xfc|0xf1=0xfd是正確的。
圖4  功能驗證

 

若以二進(jìn)制的形式來表示,其結(jié)果如圖5所示。
圖5 二進(jìn)制表示
3)異或邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行異或邏輯運算,它是一個2目操作運算,其數(shù)據(jù)類型為字節(jié)型。

 

該函數(shù)的內(nèi)容如下:
在完成該函數(shù)的編輯后,將其存入文件xor.sh即可。
為驗證其正確性,需鍵入指令source ./xor.sh即可運行該函數(shù)。在輸入2個操作數(shù)后,輸入指令hs_xor即可達(dá)到結(jié)果。以操作數(shù)0xfc和241為例,其運算結(jié)果為13。

 

由于241=0Xf1,故0xfc^0xf1=0x0d=13是正確的。
圖6  功能驗證
4)取反邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行邏輯取反運算,它是一個單目操作運算,其數(shù)據(jù)類型為字節(jié)型。

 

該函數(shù)的內(nèi)容如下:
在完成該函數(shù)的編輯后,將其存入文件not.sh即可。

 

為驗證其正確性,需鍵入指令source ./not.sh即可運行該函數(shù)。由于它是單目運算,故只鍵入1個操作數(shù)即可。以操作數(shù)0xfc為例,其運算結(jié)果為3,說明函數(shù)正確。
圖7  功能驗證
5)移位操作函數(shù)
該函數(shù)的作用是按位進(jìn)行數(shù)據(jù)移動,它是一個單目操作運算,其數(shù)據(jù)類型為字節(jié)型。在此類函數(shù)中,包括左移、右移和位交換。
(1) 左移
左移函數(shù)的表達(dá)式為:y=a<<n  (a為整數(shù)型變量,n=0~7)
實現(xiàn)左移的函數(shù)方式為:y=a*(2^n) ,2^n表示2的n次方。

 

實現(xiàn)左移的函數(shù)內(nèi)容為:
在完成該函數(shù)的編輯后,將其存入文件yw.sh即可。
為驗證其正確性,需鍵入指令source ./ yw.sh即可運行該函數(shù)。該函數(shù)是雙目運算,故要鍵入2個操作數(shù)。以操作數(shù)0x85為例,其左移2位的結(jié)果為0x224,說明函數(shù)正確。
(2) 右移
右移函數(shù)的表達(dá)式為:y=a>>n (a為整數(shù)型變量,n=0~7)
實現(xiàn)右移的函數(shù)方式為:y=a/(2^n)

 

實現(xiàn)右移的函數(shù)內(nèi)容為:
在完成該函數(shù)的編輯后,將其存入文件yw.sh即可。
為驗證其正確性,需鍵入指令source ./ yw.sh即可運行該函數(shù)。該函數(shù)是雙目運算,故要鍵入2個操作數(shù)。以操作數(shù)0x85為例,其右移2位的結(jié)果為0x21,說明函數(shù)正確。
(3) 位交換
在數(shù)據(jù)操作處理中,常會涉及半字節(jié)的操作,比如用字節(jié)數(shù)據(jù)的高4位或低4位,或交換數(shù)據(jù)的高、低4位等。

 

對提取的高4位測試為:
對提取的低4位測試為:
這樣我們就基本上接近了關(guān)于位操作的函數(shù)設(shè)計及處理方法問題,盡管這些問題很基礎(chǔ),但它卻是很重要,也很使用,希望它對大家能有所裨益!

 

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項目外包 more+