邏輯運算符中所含的And 運算符,Eqv 運算符,Imp 運算符,Not 運算符,Or 運算符,Xor 運算符等均可用來實現(xiàn)位運算。
創(chuàng)新互聯(lián)堅持網(wǎng)頁設計,我們不會倒閉、轉行,已經(jīng)持續(xù)穩(wěn)定運營十多年。專業(yè)網(wǎng)絡公司技術,豐富的成功經(jīng)驗和創(chuàng)作思維,提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。我們不僅會設計網(wǎng)站,更會全網(wǎng)營銷推廣。幫助中小型企業(yè)在“互聯(lián)網(wǎng)+"的時代里通過推廣營銷傳播路線轉型升級,累計幫助多家客戶實現(xiàn)網(wǎng)絡營銷化,與我們一起攜手共創(chuàng)未來!
算術運算符的* 運算符,\ 運算符可用于左移和右移位運算。
And 運算符,還對兩個數(shù)值表達式中位置相同的位進行逐位比較,并根據(jù)下表對 result 中相應的位進行設置:
Or 運算符,對兩個數(shù)值表達式中位置相同的位進行逐位比較,并根據(jù)下表對 result 中相應的位進行設置:
Xor 運算符既可作為邏輯運算符,也可作為位運算符。使用互斥或的邏輯進行的兩個表達式的逐位比較,其結果通過下表說明:
詳細的參考:MSDN6.0關于運算符的介紹。
用bitarray類和BitVector32類實現(xiàn)
VB實現(xiàn)大致如下:
Imports?System.Collections.Specialized
...
Dim?bvData?as?BitVector32
Dim?sec1?As?BitVector32.Section?=?BitVector32.CreateSection(255)
Dim?sec2?As?BitVector32.Section?=?BitVector32.CreateSection(255,sec1)
Dim?sec3?As?BitVector32.Section?=?BitVector32.CreateSection(255,sec2)
Dim?sec4?As?BitVector32.Section?=?BitVector32.CreateSection(255,sec3)
Dim?Buf(4096)?as?Byte?'receive?byte?size?matched?with?DSP?send?data:?1024*4Byte
Dim?recCount?as?Integer
Dim?Data(1024)?as?long
....
For?recCount?=?0?To?1023
bvData(sec4)?=?buf(recByte*4)
bvData(sec3)?=?buf(recByte*4+1)
bvData(sec2)?=?buf(recByte*4+2)
bvData(sec1)?=?buf(recByte*4+3)
Data(recCount)?=?bvData.Data?'這樣數(shù)據(jù)肯定是-398
Next
....
"位運算就是對字節(jié)或字節(jié)內(nèi)的二進制位數(shù)進行測試、抽取、設置或移位等操作。因此位運算不能是float、double、long double等其他復雜的數(shù)據(jù)類型,只能是標準的char和int數(shù)據(jù)類型"(在VB中意味著可以對byte、integer、long類型進行位運算操作。
以上摘自《C語言程序設計》--人民郵電出版社一書,我自學C語言用的教材。建議你學習一些C語言的基本知識,因為C語言比VB更貼近硬件,因此能夠幫助你理解一些VB中的概念。
C語言中的基本的位運算操作有按位與,按位或,按位異或,按位置反以及左、右移位操作。
VB中我只用過按位與(AND)、按位或(OR)、按位異或(XOR)。其他的需要自己添加代碼模擬。
具體各位運算的含義可以自己查閱相關文獻、書刊。空間有限,我就不貼出來了。
你應該知道的常識:
(一)1 Byte = 8 bit 一個字節(jié)在存儲器中占8位;
(二)在VB中,integer類型的范圍為-32768(-2^15)~ 32767(2^15-1),占兩個字節(jié),總共16位;
(三)計算機內(nèi)存中,所有數(shù)據(jù)都以二進制格式存儲。正數(shù)的最高位為0,后面的0/1序列與其絕對值的二進制形式相同,正數(shù)的原碼、反碼、補碼完全一致。
下面給出問題的分析步驟:
根據(jù)上面的結論,123在內(nèi)存中的存儲方式是這樣的:
(二進制位)15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
(整數(shù)123) 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1
(你要的結果)0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
形式上= 123+2^2=123+4=127。
因此,如果不用位運算,用123+4(4的二進制的表達最后三位是100,其余全為0)就得到了你要的結果。但是很多情況下我們可以省去自己計算的麻煩,直接用位運算解決。
上面的式子的效果與 123 與( xxxx xxxx xxxx x1xx)做按位或運算是一樣的。
x為0或1都不影響結果,只要確保第三位為1.
所以,你想讓原有的數(shù)某一位或某幾位變?yōu)?,只要將這個數(shù)與對應位為1的數(shù)做Or運算即可。
因此上面的式子等效于 123 Or 4(100) 或者 123 Or 7 (111) 或者 123 Or 127(111 1111),等等。
本文標題:vb.net進行位操作 vbnet goto
當前地址:http://newbst.com/article0/doihhio.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、微信小程序、小程序開發(fā)、網(wǎng)站策劃、虛擬主機、移動網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)