学习过C言语的朋友们都知道,每逢咱们谈起C言语的优势时,强壮的位操作能力是不能不提的,正是因为C言语具有强壮的位操作能力,使得C言语广泛用于开发操作体系和嵌入式运用中。
LABVIEW作为面向详细运用的工程师的编程言语,因为常常需求操作硬件设备寄存器,而寄存器往往都是需求位操作的,因而LABVIEW具有位操作能力是有必要的。LABVIEW不只具有强壮的位操作能力,并且操作极端便利,这得益于LABVIEW具有一般编程言语不具有的特别数据类型–布尔量。
信任常常运用C51和PLC的朋友们都十分了解位操作,51单片机具有自己的位寻址区,位寻址区不光能够进行位寻址,也能够按字节、字(双字节)寻址,PLC也是如此。可是许多设备和编程言语是不支撑位寻址的,只允许字节或许字的办法,高档编程言语根本如此。
我鄙人面的文章中大致提及了LABVIEW中的位操作,可是是针对详细问题的,本文期望体系性地评论一下LABVIEW中的位操作极端特色。
http://www.jsuedc.cn/csxcs366/blog/08-08/153754_5fd57.html
C言语中的位操作符包含位非(按位取反)、位与、位或和异或四个根本操作符,LABVIEW供给了更多的位操作函数,这表现了LABVIEW言语的面向运用的特色,其实,具有了与、或、非三个根本操作符,其它位操作符都能够由与、或、非操作符组合而成。
LABVIEW供给了共同的布尔数据类型,可是布尔数据实践占用一个字节,也便是说,布尔数据尽管形式上相似于位,可是与位是彻底不同的,LABVIEW使用一个字节表明布尔量,假如字节值为0,则表明布尔量为FALSE,假如值为1,则表明布尔量为TRUE。
LABVIEW专门供给布尔函数选板,包含了与、或、非等多种布尔操作函数,如下图所示:
LABVIEW中的布尔函数根本都是多态函数,具有两个十分重要的特色:
1、布尔函数支撑布尔量的逻辑运算
2、支撑U8、U16、U32等位运算
3、函数的输入端子有必要为布尔值或数字。 能够是标量、数字或布尔值数组或簇、数字或布尔值簇数组等。
布尔量的根本逻辑运算十分简略,这儿就不详细评论了。关于多字节的位运算,比方U16、U32等,与U8的位操作十分相似,因而下面的评论主要是针对U8数据的。
首要咱们考虑一下为什么要针对U8而不是I8数据类型那,I8数据的最高位为符号位,因而I8主要是用来表明数值的巨细的。咱们选用U8进行位操作,U8数据每个位都表明一个布尔值(开关量),每个位的值只要0、1两种挑选。U8数据能够表明8个位,不存在符号的问题,实践上咱们对U8所代表的值并不关怀,咱们更关怀的是每个位的值是0仍是1。
下面咱们开端评论LABVIEW中常用的位操作。
一、掩码
因为高档言语不支撑位寻址,所以针对字节或字中的某一位或许几位进行操作时,有必要凭借与掩码。掩码是某些位为0,某些位为1的位组合。关于字节的位操作,一般选用下列掩码(MASK)
BIT0—–>(MASK) 0X01
BIT1—–>(MASK) 0X02
BIT2—–>(MASK)0X04
BIT3—–>(MASK)0X08
BIT4—–>(MASK)0X10
BIT5—–>(MASK)0X20
BIT6—–>(MASK)0X40
BIT7—–>(MASK)0X80
一个字节有8位构成,别离界说为BIT0—>BIT7,每位的掩码是该位为1,其它为0的U8数。
二、怎么求取掩码
咱们罗列了U8的8个掩码,假如是U64,则会有64个掩码,这种情况下选用罗列的办法就很麻烦了。很明显,掩码是有规则的,从BIT0开端为1,顺次递加2倍,因而能够用下列两种办法求取掩码。
1、计算法
2、移位法
咱们知道,乘以2运算实践上便是移位运算,并且更为方便,这是C言语中常用的办法。
三、置位(翻开位)
对某一方位1,而其它位坚持不变,这种操作称作置位(SET)操作,也称作翻开位操作(OPEN).
假如需求某方位位,而其它位不变,与该位掩码进行按位或运算即可。下面的比如对BIT3进行置位操作。