本帖最后由 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 紫色派
為使其具有溫度檢測與顯示功能,需為它配置一個顯示屏和一個溫度傳感器。
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)容如下:
f1.jpg (41.92 KB )
下載附件
2023-5-12 10:04 上傳
在完成該函數(shù)的編輯后,將其存入文件and.sh即可。
為驗證其正確性,按圖2所示鍵入指令source ./and.sh即可運行該函數(shù)。其中參與運算的2個操作數(shù)為0xfc和0x38,
所得到結(jié)果為56。由于56=0X38,故0xfc&0x38=0x38是正確的。
2.jpg (15.02 KB )
下載附件
2023-5-12 10:05 上傳
圖2 功能驗證
若以二進(jìn)制的形式來表示,其結(jié)果如圖3所示,該形式更便于驗證其正確性。
3.jpg (17.6 KB )
下載附件
2023-5-12 10:06 上傳
圖3 二進(jìn)制表示
2)或邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行或邏輯運算,它是一個2目操作運算,其數(shù)據(jù)類型為字節(jié)型。
該函數(shù)的內(nèi)容如下:
f2.jpg (41.14 KB )
下載附件
2023-5-12 10:08 上傳
在完成該函數(shù)的編輯后,將其存入文件or.sh即可。
為驗證其正確性,需鍵入指令source ./or.sh即可運行該函數(shù)。為了增強(qiáng)使用的靈活性,故2個操作數(shù)是通過按鍵來輸入的。以操作數(shù)0xfc和0x38為例,其運算結(jié)果為56。
由于253=0Xfd,故0xfc|0xf1=0xfd是正確的。
4.jpg (6.99 KB )
下載附件
2023-5-12 10:10 上傳
圖4 功能驗證
若以二進(jìn)制的形式來表示,其結(jié)果如圖5所示。
5.jpg (15.82 KB )
下載附件
2023-5-12 10:11 上傳
圖5 二進(jìn)制表示
3)異或邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行異或邏輯運算,它是一個2目操作運算,其數(shù)據(jù)類型為字節(jié)型。
該函數(shù)的內(nèi)容如下:
f6.jpg (57.37 KB )
下載附件
2023-5-12 10:14 上傳
在完成該函數(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.jpg (18.37 KB )
下載附件
2023-5-12 10:14 上傳
圖6 功能驗證
4)取反邏輯函數(shù)
該函數(shù)的作用是按位進(jìn)行邏輯取反運算,它是一個單目操作運算,其數(shù)據(jù)類型為字節(jié)型。
該函數(shù)的內(nèi)容如下:
f7.jpg (41.32 KB )
下載附件
2023-5-12 10:16 上傳
在完成該函數(shù)的編輯后,將其存入文件not.sh即可。
為驗證其正確性,需鍵入指令source ./not.sh即可運行該函數(shù)。由于它是單目運算,故只鍵入1個操作數(shù)即可。以操作數(shù)0xfc為例,其運算結(jié)果為3,說明函數(shù)正確。
7.jpg (15.97 KB )
下載附件
2023-5-12 10:17 上傳
圖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)容為:
f8.jpg (34.02 KB )
下載附件
2023-5-12 10:19 上傳
在完成該函數(shù)的編輯后,將其存入文件yw.sh即可。
為驗證其正確性,需鍵入指令source ./ yw.sh即可運行該函數(shù)。該函數(shù)是雙目運算,故要鍵入2個操作數(shù)。以操作數(shù)0x85為例,其左移2位的結(jié)果為0x224,說明函數(shù)正確。
F10.jpg (7.51 KB )
下載附件
2023-5-12 10:25 上傳
(2) 右移
右移函數(shù)的表達(dá)式為:y=a>>n (a為整數(shù)型變量,n=0~7)
實現(xiàn)右移的函數(shù)方式為:y=a/(2^n)
實現(xiàn)右移的函數(shù)內(nèi)容為:
f9.jpg (28.07 KB )
下載附件
2023-5-12 10:21 上傳
在完成該函數(shù)的編輯后,將其存入文件yw.sh即可。
為驗證其正確性,需鍵入指令source ./ yw.sh即可運行該函數(shù)。該函數(shù)是雙目運算,故要鍵入2個操作數(shù)。以操作數(shù)0x85為例,其右移2位的結(jié)果為0x21,說明函數(shù)正確。
F11.jpg (8.14 KB )
下載附件
2023-5-12 10:29 上傳
(3) 位交換
在數(shù)據(jù)操作處理中,常會涉及半字節(jié)的操作,比如用字節(jié)數(shù)據(jù)的高4位或低4位,或交換數(shù)據(jù)的高、低4位等。
對提取的高4位測試為:
F12.jpg (12.23 KB )
下載附件
2023-5-12 10:31 上傳
對提取的低4位測試為:
F13.jpg (9.64 KB )
下載附件
2023-5-12 10:32 上傳
這樣我們就基本上接近了關(guān)于位操作的函數(shù)設(shè)計及處理方法問題,盡管這些問題很基礎(chǔ),但它卻是很重要,也很使用,希望它對大家能有所裨益!