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

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

  
  • 作者:
  • 來(lái)源:
  • [導(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)放投稿

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