您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 位操作 >

LABVIEW的深入探索之功能强大的位操作能力

发布时间:2019-06-12 10:11 来源:未知 编辑:admin

  LABVIEW作为面向具体应用的工程师的编程语言,由于经常需要操作硬件设备寄存器,而寄存器往往都是需要位操作的,因此LABVIEW具有位操作能力是必须的。LABVIEW不仅具有强大的位操作能力,而且操作极其方便,这得益于LABVIEW具有一般编程语言不具备的特殊数据类型--布尔量。

  相信经常使用C51和PLC的朋友们都非常熟悉位操作,51单片机具有自己的位寻址区,位寻址区不但可以进行位寻址,也可以按字节、字(双字节)寻址,PLC也是如此。但是很多设备和编程语言是不支持位寻址的,只允许字节或者字的方式,高级编程语言基本如此。

  我在下面的文章中大致提及了LABVIEW中的位操作,但是是针对具体问题的,本文希望系统性地讨论一下LABVIEW中的位操作极其特点。

  C语言中的位操作符包括位非(按位取反)、位与、位或和异或四个基本操作符,LABVIEW提供了更多的位操作函数,这体现了LABVIEW语言的面向应用的特点,其实,具备了与、或、非三个基本操作符,其它位操作符都可以由与、或、非操作符组合而成。

  LABVIEW提供了独特的布尔数据类型,但是布尔数据实际占用一个字节,也就是说,布尔数据虽然形式上类似于位,但是与位是完全不同的,LABVIEW利用一个字节表示布尔量,如果字节值为0,则表示布尔量为FALSE,如果值为1,则表示布尔量为TRUE。

  LABVIEW专门提供布尔函数选板,包括了与、或、非等多种布尔操作函数,如下图所示:

  3、函数的输入端子必须为布尔值或数字。 可以是标量、数字或布尔值数组或簇、数字或布尔值簇数组等。

  布尔量的基本逻辑运算非常简单,这里就不具体讨论了。对于多字节的位运算,比如U16、U32等,与U8的位操作非常类似,因此下面的讨论主要是针对U8数据的。

  首先我们考虑一下为什么要针对U8而不是I8数据类型那,I8数据的最高位为符号位,因此I8主要是用来表示数值的大小的。我们采用U8进行位操作,U8数据每个位都表示一个布尔值(开关量),每个位的值只有0、1两种选择。U8数据可以表示8个位,不存在符号的问题,实际上我们对U8所代表的值并不关心,我们更关心的是每个位的值是0还是1。

  由于高级语言不支持位寻址,所以针对字节或字中的某一位或者几位进行操作时,必须借助与掩码。掩码是某些位为0,某些位为1的位组合。对于字节的位操作,通常采用下列掩码(MASK)

  一个字节有8位构成,分别定义为BIT0--->

  BIT7,每位的掩码是该位为1,其它为0的U8数。

  我们列举了U8的8个掩码,如果是U64,则会有64个掩码,这种情况下采用列举的方法就很麻烦了。很明显,掩码是有规律的,从BIT0开始为1,依次递增2倍,因此可以用下列两种方法求取掩码。

  我们知道,乘以2运算实际上就是移位运算,而且更为快捷,这是C语言中常用的方法。

  对某一位置1,而其它位保持不变,这种操作称作置位(SET)操作,也称作打开位操作(OPEN).

  如果需要某位置位,而其它位不变,与该位掩码进行按位或运算即可。下面的例子对BIT3进行置位操作。

http://tritecbuilding.com/weicaozuo/194.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有