新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > LABVIEW的深入探索之功能強大的位操作能力

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

        作者: 時間:2017-01-09 來源:網(wǎng)絡 收藏
        學習過C語言的朋友們都知道,每當我們談起C語言的優(yōu)勢時,強大的位操作能力是不能不提的,正是因為C語言具有強大的位操作能力,使得C語言廣泛用于開發(fā)操作系統(tǒng)和嵌入式應用中。

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

        本文引用地址:http://www.104case.com/article/201701/337243.htm

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

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

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

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

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

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

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

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

        2、支持U8、U16、U32等位運算

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

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

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

        下面我們開始討論LABVIEW中常用的位操作。

        一、掩碼

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

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

        二、如何求取掩碼

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

        1、計算法

        2、移位法

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

        三、置位(打開位)

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

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


        上一頁 1 2 下一頁

        關鍵詞: LABVIEW位操

        評論


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

        關閉
        主站蜘蛛池模板: 文化| 博湖县| 太湖县| 会东县| 磐石市| 察雅县| 任丘市| 敦化市| 监利县| 揭阳市| 天等县| 麻城市| 潜山县| 佳木斯市| 隆回县| 弥渡县| 惠州市| 泰和县| 虹口区| 江城| 公安县| 游戏| 饶平县| 万全县| 长沙市| 策勒县| 聊城市| 共和县| 兰考县| 遵义市| 探索| 永新县| 綦江县| 台北市| 芮城县| 漳平市| 封开县| 沂源县| 招远市| 大冶市| 砀山县|