用bitarray類(lèi)和BitVector32類(lèi)實(shí)現(xiàn)
為蛟河等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及蛟河網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站制作、蛟河網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
VB實(shí)現(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
....
TextBox1.Text?=?7?And?10
TextBox1.Text?=?7?Or?10
TextBox1.Text?=?7?Xor?10
TextBox1.Text?=?Not?10
TextBox1.Text?=?7??10
TextBox1.Text?=?7??10
如這些,我在VB.Net中也找不到shl和shr運(yùn)算符~
不過(guò)可以通過(guò)"自定義運(yùn)算符"來(lái)寫(xiě)出我們想要的功能
保留兩位小數(shù)的一般方法是四舍五入法。
保留兩位小數(shù),看千分位。是4或比4小舍去;是5或比5大舍去以后向前一位進(jìn)1。
如:3.425保留兩位小數(shù)就是3.43
3.421保留兩位小數(shù)就是3.42
又如: 3.4263保留兩位小數(shù)就是3.43
3.4233保留兩位小數(shù)就是3.42
再如:3.4保留兩位小數(shù)就是3.40
注意只能對(duì)整型執(zhí)行按位運(yùn)算。浮點(diǎn)值必須轉(zhuǎn)換為整型后,才能執(zhí)行按位運(yùn)算。按位運(yùn)算采用二進(jìn)制(以 2 為基)形式計(jì)算兩個(gè)整數(shù)值。它們比較對(duì)應(yīng)位置上的位,然后基于比較的結(jié)果賦值。下面的示例演示了 And 運(yùn)算符。復(fù)制Dim x As Integerx = 3 And 5 前面的示例將 x 的值設(shè)置為 1。發(fā)生這種情況的原因如下:這些值以二進(jìn)制形式處理:二進(jìn)制格式的 3 為 011二進(jìn)制格式的 5 為 101And 運(yùn)算符比較這些二進(jìn)制表示方式,一次比較一個(gè)二進(jìn)制位置(位)。如果給定位置的兩個(gè)位都為 1,則將 1 放在結(jié)果中的該位置。如果任何一個(gè)位是 0,則將 0 放在結(jié)果中的該位置。在前面的示例中,按如下所示計(jì)算結(jié)果:011(二進(jìn)制格式的 3)101(二進(jìn)制格式的 5)001(二進(jìn)制格式的計(jì)算結(jié)果)計(jì)算結(jié)果以十進(jìn)制形式處理。值 001 是 1 的二進(jìn)制表示形式,因此 x = 1。除了在任何一個(gè)比較位是 1 或兩個(gè)比較位都是 1 的情況下將 1 賦予結(jié)果位以外,按位 Or 運(yùn)算與此類(lèi)似。Xor 在比較的位正好只有一個(gè)是 1(而不是兩者都是 1)時(shí)將 1 賦給結(jié)果位。Not 采用單個(gè)操作數(shù)并反轉(zhuǎn)所有位(包括符號(hào)位),然后將該值賦予結(jié)果。這意味著,對(duì)于有符號(hào)正數(shù),Not 始終返回負(fù)值,而對(duì)于負(fù)數(shù),Not 始終返回正值或零。AndAlso 和OrElse 運(yùn)算符不支持按位運(yùn)算。 追問(wèn): 好復(fù)雜啊...還是不會(huì),還有整數(shù)怎么轉(zhuǎn)換為二進(jìn)制數(shù)? 回答: 為什么一定要用位運(yùn)算呢,你那個(gè)乘法只能通過(guò)左移操作符“ ”來(lái)進(jìn)行,而左移一次代表乘以2,要是乘以一個(gè)小數(shù),就必須先化成2的n次方,不夠再用加減法調(diào)整,很麻煩啊,沒(méi)必要用位運(yùn)算啊。。。 追問(wèn): 因?yàn)槲乙M(jìn)行大量的運(yùn)算,但速度要快,所有用位運(yùn)算...我也不想啊.. 回答: 那就不該用VB 啊,c/c++在執(zhí)行效率上是沒(méi)話說(shuō)的。 追問(wèn): 問(wèn)題就是不會(huì)嘛... 回答: 那你上csdn上發(fā)帖效果應(yīng)該不錯(cuò) 追問(wèn): CSDN發(fā)了,我發(fā)在高性能運(yùn)算,沒(méi)人... 回答: 耐心一些,或者你應(yīng)該發(fā)到VB.NET論壇那里。。。 追問(wèn): 額..只能這樣了... 提問(wèn)者 的感言: 太復(fù)雜了..算了 2010-11-08
網(wǎng)站欄目:vb.net位 vbnet using
網(wǎng)頁(yè)鏈接:http://www.rwnh.cn/article12/doohegc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站收錄、網(wǎng)站內(nèi)鏈、電子商務(wù)、靜態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容