新聞中心

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

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

作者: 時(shí)間:2017-01-09 來源:網(wǎng)絡(luò) 收藏

除了使用基本的位操作函數(shù)外,LV中還可以使用另外一種獨(dú)特的方法進(jìn)行位操作,這是其它編程語言不具備的。我們知道LABVIEW中的布爾數(shù)據(jù)類型與位非常類似,不過是存儲(chǔ)空間不同。LABVIEW中的布爾數(shù)組和按字節(jié)、字進(jìn)行位操作極為類似。因此可以先把字節(jié)、字轉(zhuǎn)換為布爾數(shù)組,進(jìn)行相應(yīng)的位操作后在轉(zhuǎn)換回字節(jié)、字。如下圖所示,實(shí)現(xiàn)的是置位操作,與上圖效果相同。

布爾數(shù)組可以直接轉(zhuǎn)換成U32,因此使用上述方法操作雙字更為方便,由于中間經(jīng)過了多次轉(zhuǎn)換,可能運(yùn)行效率會(huì)低于直接使用位操作。在下面的其它位操作中,將同時(shí)演示兩種不同的方法。

四、復(fù)位(關(guān)閉位)

復(fù)位操作與置位操作相反,復(fù)位操作使某個(gè)位的值恢復(fù)為0狀態(tài),這是默認(rèn)狀態(tài),因此稱作復(fù)位。

對(duì)掩碼按位取反,則只有一位為0,其它位均為1,與字節(jié)進(jìn)行與操作,則只有一位復(fù)位為0,其它位保持不變。

五、轉(zhuǎn)置位

轉(zhuǎn)置位就是對(duì)掩碼指定的位進(jìn)行反轉(zhuǎn),如果原來為0,則置位為1。如果原來位1,則復(fù)位為0。進(jìn)行轉(zhuǎn)置位操作,最簡單的就是進(jìn)行異或操作。

假如我們還是對(duì)BIT3 (掩碼0X08)進(jìn)行操作。由于掩碼中的BIT3為1,如果字節(jié)中的BIT3為0,異或的結(jié)果是不同為1,字節(jié)中的BIT3由0成了1。反之,如果字節(jié)中的BIT3為1,異或的結(jié)果是相同為0,因此BIT3由1變成了0,實(shí)現(xiàn)了該位的轉(zhuǎn)置。

由于掩碼的其它位為0,根據(jù)相同為0,不同為1的原則,其它位會(huì)保持不變。

六、查看某位的值

查看某位的值就非常簡單了,只要字節(jié)與掩碼進(jìn)行與操作,判斷結(jié)果是否為0就可以了。如果字節(jié)該位為1,與掩碼與的結(jié)果則不為0。反之,如果字節(jié)的該位為0,與掩碼與的結(jié)果則為0。

除了了對(duì)字節(jié)中的某一位進(jìn)行置位、復(fù)位、轉(zhuǎn)置和測試位的能力,LABVIEW還支持對(duì)無符號(hào)數(shù)、有符號(hào)數(shù)的移位操作,這在高級(jí)編程語言中是不多見的,充分體現(xiàn)了LABVIEW面向工程應(yīng)用的特點(diǎn)。


上一頁 1 2 下一頁

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

評(píng)論


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

關(guān)閉