网站建设资讯

NEWS

网站建设资讯

vb.net位操作运算 vb位运算符

VB里怎样实现位运算?

逻辑运算符中所含的And 运算符,Eqv 运算符,Imp 运算符,Not 运算符,Or 运算符,Xor 运算符等均可用来实现位运算。

成都创新互联是一家专注于网站建设、网站制作与策划设计,兴庆网站建设哪家好?成都创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:兴庆等地区。兴庆做网站价格咨询:18982081108

算术运算符的* 运算符,\ 运算符可用于左移和右移位运算。

And 运算符,还对两个数值表达式中位置相同的位进行逐位比较,并根据下表对 result 中相应的位进行设置:

Or 运算符,对两个数值表达式中位置相同的位进行逐位比较,并根据下表对 result 中相应的位进行设置:

Xor 运算符既可作为逻辑运算符,也可作为位运算符。使用互斥或的逻辑进行的两个表达式的逐位比较,其结果通过下表说明:

详细的参考:MSDN6.0关于运算符的介绍。

VB中的位操作函数,对字节中的一位进行操作

"位运算就是对字节或字节内的二进制位数进行测试、抽取、设置或移位等操作。因此位运算不能是float、double、long double等其他复杂的数据类型,只能是标准的char和int数据类型"(在VB中意味着可以对byte、integer、long类型进行位运算操作。

以上摘自《C语言程序设计》--人民邮电出版社一书,我自学C语言用的教材。建议你学习一些C语言的基本知识,因为C语言比VB更贴近硬件,因此能够帮助你理解一些VB中的概念。

C语言中的基本的位运算操作有按位与,按位或,按位异或,按位置反以及左、右移位操作。

VB中我只用过按位与(AND)、按位或(OR)、按位异或(XOR)。其他的需要自己添加代码模拟。

具体各位运算的含义可以自己查阅相关文献、书刊。空间有限,我就不贴出来了。

你应该知道的常识:

(一)1 Byte = 8 bit 一个字节在存储器中占8位;

(二)在VB中,integer类型的范围为-32768(-2^15)~ 32767(2^15-1),占两个字节,总共16位;

(三)计算机内存中,所有数据都以二进制格式存储。正数的最高位为0,后面的0/1序列与其绝对值的二进制形式相同,正数的原码、反码、补码完全一致。

下面给出问题的分析步骤:

根据上面的结论,123在内存中的存储方式是这样的:

(二进制位)15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

(整数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.

所以,你想让原有的数某一位或某几位变为1,只要将这个数与对应位为1的数做Or运算即可。

因此上面的式子等效于 123 Or 4(100) 或者 123 Or 7 (111) 或者 123 Or 127(111 1111),等等。

100分 急求在vb.net中怎样进行位操作

用bitarray类和BitVector32类实现

VB实现大致如下:

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 '这样数据肯定是-398

Next

....

VB.NET中怎样实现位运算

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运算符~

不过可以通过"自定义运算符"来写出我们想要的功能


文章标题:vb.net位操作运算 vb位运算符
分享链接:http://njwzjz.com/article/hidide.html