在Linux下只有条件的逻辑运算,却并没有位逻辑运算,然而在实际应用中逻辑位运算又是使用非常广泛的,为此可自行设计出这样的函数以供需要。
1)与逻辑函数
该函数的作用是按位进行与逻辑运算,它是一个2目操作运算,其数据类型为字节型。
该函数的内容如下:

在完成该函数的编辑后,将其存入文件and.sh即可。
为验证其正确性,按图1所示键入指令source ./and.sh即可运行该函数。其中参与运算的2个操作数为0xfc和0x38,
所得到结果为56。由于56=0X38,故0xfc&0x38=0x38是正确的。

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

图2 二进制表示
2)或逻辑函数
该函数的作用是按位进行或逻辑运算,它是一个2目操作运算,其数据类型为字节型。
该函数的内容如下:

在完成该函数的编辑后,将其存入文件or.sh即可。
为验证其正确性,需键入指令source ./or.sh即可运行该函数。为了增强使用的灵活性,故2个操作数是通过按键来输入的。以操作数0xfc和0x38为例,其运算结果为56。
由于253=0Xfd,故0xfc|0xf1=0xfd是正确的。

图3 功能验证
若以二进制的形式来表示,其结果如图4所示。

图4 二进制表示
3)异或逻辑函数
该函数的作用是按位进行异或逻辑运算,它是一个2目操作运算,其数据类型为字节型。
该函数的内容如下:

在完成该函数的编辑后,将其存入文件xor.sh即可。
为验证其正确性,需键入指令source ./xor.sh即可运行该函数。在输入2个操作数后,输入指令hs_xor即可达到结果。以操作数0xfc和241为例,其运算结果为13。
由于241=0Xf1,故0xfc^0xf1=0x0d=13是正确的。

图5 功能验证
4)取反逻辑函数
该函数的作用是按位进行逻辑取反运算,它是一个单目操作运算,其数据类型为字节型。
该函数的内容如下:

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

图6 功能验证
这样我们就基本上解决了关于位操作的函数设计及处理方法问题,尽管这些问题很基础,但它却是很重要,也很实用的。
|