[应用]【技术分享】在紫色派上实现逻辑位操作函数的配置

紫色派是一款安装LINUX软件即可进行其学习与编程测试的开发板,其外观如图1所示。

图1 紫色派

为使其具有温度检测与显示功能,需为它配置一个显示屏和一个温度传感器。

1. 位逻辑处理函数

在紫色派所提供的LINUX中,它只支持条件逻辑判别,却并没有提供相应的位逻辑函数,因此在程序设计中往往会受到很大的牵制。

由于在OLED屏的驱动程序中要用到它,为此特意为其补充相应的位逻辑处理函数,其内容有:与逻辑函数、或逻辑函数、非逻辑函数以及位移处理函数等。

1)与逻辑函数

该函数的作用是按位进行与逻辑运算,它是一个2目操作运算,其数据类型为字节型。

该函数的内容如下:

在完成该函数的编辑后,将其存入文件and.sh即可。

为验证其正确性,按图2所示键入指令source ./and.sh即可运行该函数。其中参与运算的2个操作数为0xfc和0x38,

所得到结果为56。由于56=0X38,故0xfc&0x38=0x38是正确的。

图2  功能验证


 

若以二进制的形式来表示,其结果如图3所示,该形式更便于验证其正确性。

图3  二进制表示

2)或逻辑函数

该函数的作用是按位进行或逻辑运算,它是一个2目操作运算,其数据类型为字节型。

该函数的内容如下:

在完成该函数的编辑后,将其存入文件or.sh即可。

为验证其正确性,需键入指令source ./or.sh即可运行该函数。为了增强使用的灵活性,故2个操作数是通过按键来输入的。以操作数0xfc和0x38为例,其运算结果为56。

由于253=0Xfd,故0xfc|0xf1=0xfd是正确的。

图4  功能验证

若以二进制的形式来表示,其结果如图5所示。

图5 二进制表示

3)异或逻辑函数

该函数的作用是按位进行异或逻辑运算,它是一个2目操作运算,其数据类型为字节型。

该函数的内容如下:

在完成该函数的编辑后,将其存入文件xor.sh即可。

为验证其正确性,需键入指令source ./xor.sh即可运行该函数。在输入2个操作数后,输入指令hs_xor即可达到结果。以操作数0xfc和241为例,其运算结果为13。

由于241=0Xf1,故0xfc^0xf1=0x0d=13是正确的。

图6  功能验证

4)取反逻辑函数

该函数的作用是按位进行逻辑取反运算,它是一个单目操作运算,其数据类型为字节型。

该函数的内容如下:

在完成该函数的编辑后,将其存入文件not.sh即可。

为验证其正确性,需键入指令source ./not.sh即可运行该函数。由于它是单目运算,故只键入1个操作数即可。以操作数0xfc为例,其运算结果为3,说明函数正确。

图7  功能验证

5)移位操作函数

该函数的作用是按位进行数据移动,它是一个单目操作运算,其数据类型为字节型。在此类函数中,包括左移、右移和位交换。

(1) 左移

左移函数的表达式为:y=a<<n  (a为整数型变量,n=0~7)

实现左移的函数方式为:y=a*(2^n) ,2^n表示2的n次方。

实现左移的函数内容为:

在完成该函数的编辑后,将其存入文件yw.sh即可。

为验证其正确性,需键入指令source ./ yw.sh即可运行该函数。该函数是双目运算,故要键入2个操作数。以操作数0x85为例,其左移2位的结果为0x224,说明函数正确。

(2) 右移

右移函数的表达式为:y=a>>n (a为整数型变量,n=0~7)

实现右移的函数方式为:y=a/(2^n)

实现右移的函数内容为:

在完成该函数的编辑后,将其存入文件yw.sh即可。

为验证其正确性,需键入指令source ./ yw.sh即可运行该函数。该函数是双目运算,故要键入2个操作数。以操作数0x85为例,其右移2位的结果为0x21,说明函数正确。

(3) 位交换

在数据操作处理中,常会涉及半字节的操作,比如用字节数据的高4位或低4位,或交换数据的高、低4位等。

对提取的高4位测试为:

对提取的低4位测试为:

这样我们就基本上接近了关于位操作的函数设计及处理方法问题,尽管这些问题很基础,但它却是很重要,也很使用,希望它对大家能有所裨益!
---------------------
作者:jinglixixi
链接:https://bbs.21ic.com/icview-3301852-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值