LABVIEW的深入探索之功能强大的位操作能力
除了使用基本的位操作函数外,LV中还可以使用另外一种独特的方法进行位操作,这是其它编程语言不具备的。我们知道LABVIEW中的布尔数据类型与位非常类似,不过是存储空间不同。LABVIEW中的布尔数组和按字节、字进行位操作极为类似。因此可以先把字节、字转换为布尔数组,进行相应的位操作后在转换回字节、字。如下图所示,实现的是置位操作,与上图效果相同。
布尔数组可以直接转换成U32,因此使用上述方法操作双字更为方便,由于中间经过了多次转换,可能运行效率会低于直接使用位操作。在下面的其它位操作中,将同时演示两种不同的方法。
四、复位(关闭位)
复位操作与置位操作相反,复位操作使某个位的值恢复为0状态,这是默认状态,因此称作复位。
对掩码按位取反,则只有一位为0,其它位均为1,与字节进行与操作,则只有一位复位为0,其它位保持不变。
五、转置位
转置位就是对掩码指定的位进行反转,如果原来为0,则置位为1。如果原来位1,则复位为0。进行转置位操作,最简单的就是进行异或操作。
假如我们还是对BIT3 (掩码0X08)进行操作。由于掩码中的BIT3为1,如果字节中的BIT3为0,异或的结果是不同为1,字节中的BIT3由0成了1。反之,如果字节中的BIT3为1,异或的结果是相同为0,因此BIT3由1变成了0,实现了该位的转置。
由于掩码的其它位为0,根据相同为0,不同为1的原则,其它位会保持不变。
六、查看某位的值
查看某位的值就非常简单了,只要字节与掩码进行与操作,判断结果是否为0就可以了。如果字节该位为1,与掩码与的结果则不为0。反之,如果字节的该位为0,与掩码与的结果则为0。
除了了对字节中的某一位进行置位、复位、转置和测试位的能力,LABVIEW还支持对无符号数、有符号数的移位操作,这在高级编程语言中是不多见的,充分体现了LABVIEW面向工程应用的特点。
评论