<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > LABVIEW的深入探索之功能強(qiáng)大的位操作能力

          LABVIEW的深入探索之功能強(qiáng)大的位操作能力

          作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
          學(xué)習(xí)過(guò)C語(yǔ)言的朋友們都知道,每當(dāng)我們談起C語(yǔ)言的優(yōu)勢(shì)時(shí),強(qiáng)大的位操作能力是不能不提的,正是因?yàn)镃語(yǔ)言具有強(qiáng)大的位操作能力,使得C語(yǔ)言廣泛用于開(kāi)發(fā)操作系統(tǒng)和嵌入式應(yīng)用中。

          LABVIEW作為面向具體應(yīng)用的工程師的編程語(yǔ)言,由于經(jīng)常需要操作硬件設(shè)備寄存器,而寄存器往往都是需要位操作的,因此LABVIEW具有位操作能力是必須的。LABVIEW不僅具有強(qiáng)大的位操作能力,而且操作極其方便,這得益于LABVIEW具有一般編程語(yǔ)言不具備的特殊數(shù)據(jù)類型--布爾量。

          本文引用地址:http://www.ex-cimer.com/article/201701/337243.htm

          相信經(jīng)常使用C51和PLC的朋友們都非常熟悉位操作,51單片機(jī)具有自己的位尋址區(qū),位尋址區(qū)不但可以進(jìn)行位尋址,也可以按字節(jié)、字(雙字節(jié))尋址,PLC也是如此。但是很多設(shè)備和編程語(yǔ)言是不支持位尋址的,只允許字節(jié)或者字的方式,高級(jí)編程語(yǔ)言基本如此。

          我在下面的文章中大致提及了LABVIEW中的位操作,但是是針對(duì)具體問(wèn)題的,本文希望系統(tǒng)性地討論一下LABVIEW中的位操作極其特點(diǎn)。

          http://www.jsuedc.cn/csxcs366/blog/08-08/153754_5fd57.html

          C語(yǔ)言中的位操作符包括位非(按位取反)、位與、位或和異或四個(gè)基本操作符,LABVIEW提供了更多的位操作函數(shù),這體現(xiàn)了LABVIEW語(yǔ)言的面向應(yīng)用的特點(diǎn),其實(shí),具備了與、或、非三個(gè)基本操作符,其它位操作符都可以由與、或、非操作符組合而成。

          LABVIEW提供了獨(dú)特的布爾數(shù)據(jù)類型,但是布爾數(shù)據(jù)實(shí)際占用一個(gè)字節(jié),也就是說(shuō),布爾數(shù)據(jù)雖然形式上類似于位,但是與位是完全不同的,LABVIEW利用一個(gè)字節(jié)表示布爾量,如果字節(jié)值為0,則表示布爾量為FALSE,如果值為1,則表示布爾量為TRUE。

          LABVIEW專門提供布爾函數(shù)選板,包括了與、或、非等多種布爾操作函數(shù),如下圖所示:

          LABVIEW中的布爾函數(shù)基本都是多態(tài)函數(shù),具有兩個(gè)非常重要的特點(diǎn):

          1、布爾函數(shù)支持布爾量的邏輯運(yùn)算

          2、支持U8、U16、U32等位運(yùn)算

          3、函數(shù)的輸入端子必須為布爾值或數(shù)字。 可以是標(biāo)量、數(shù)字或布爾值數(shù)組或簇、數(shù)字或布爾值簇?cái)?shù)組等。

          布爾量的基本邏輯運(yùn)算非常簡(jiǎn)單,這里就不具體討論了。對(duì)于多字節(jié)的位運(yùn)算,比如U16、U32等,與U8的位操作非常類似,因此下面的討論主要是針對(duì)U8數(shù)據(jù)的。

          首先我們考慮一下為什么要針對(duì)U8而不是I8數(shù)據(jù)類型那,I8數(shù)據(jù)的最高位為符號(hào)位,因此I8主要是用來(lái)表示數(shù)值的大小的。我們采用U8進(jìn)行位操作,U8數(shù)據(jù)每個(gè)位都表示一個(gè)布爾值(開(kāi)關(guān)量),每個(gè)位的值只有0、1兩種選擇。U8數(shù)據(jù)可以表示8個(gè)位,不存在符號(hào)的問(wèn)題,實(shí)際上我們對(duì)U8所代表的值并不關(guān)心,我們更關(guān)心的是每個(gè)位的值是0還是1。

          下面我們開(kāi)始討論LABVIEW中常用的位操作。

          一、掩碼

          由于高級(jí)語(yǔ)言不支持位尋址,所以針對(duì)字節(jié)或字中的某一位或者幾位進(jìn)行操作時(shí),必須借助與掩碼。掩碼是某些位為0,某些位為1的位組合。對(duì)于字節(jié)的位操作,通常采用下列掩碼(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

          一個(gè)字節(jié)有8位構(gòu)成,分別定義為BIT0--->BIT7,每位的掩碼是該位為1,其它為0的U8數(shù)。

          二、如何求取掩碼

          我們列舉了U8的8個(gè)掩碼,如果是U64,則會(huì)有64個(gè)掩碼,這種情況下采用列舉的方法就很麻煩了。很明顯,掩碼是有規(guī)律的,從BIT0開(kāi)始為1,依次遞增2倍,因此可以用下列兩種方法求取掩碼。

          1、計(jì)算法

          2、移位法

          我們知道,乘以2運(yùn)算實(shí)際上就是移位運(yùn)算,而且更為快捷,這是C語(yǔ)言中常用的方法。

          三、置位(打開(kāi)位)

          對(duì)某一位置1,而其它位保持不變,這種操作稱作置位(SET)操作,也稱作打開(kāi)位操作(OPEN).

          如果需要某位置位,而其它位不變,與該位掩碼進(jìn)行按位或運(yùn)算即可。下面的例子對(duì)BIT3進(jìn)行置位操作。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: LABVIEW位操

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();