重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
把这个字节值
成都创新互联一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供网站制作、网站建设、成都网页设计、重庆小程序开发、成都网站开发、成都网站制作、成都软件开发、APP应用开发是成都本地专业的网站建设和网站设计公司,等你一起来见证!
与1进行And运算,如果结果为1,则第1位为1,否则就是0;
与2(即2进制数10)进行And运算,如果结果为2,则第2位为1,否则就是0;
与4(即2进制数100)进行And运算,如果结果为4,则第3位为1,否则就是0;
与8(即2进制数1000)进行And运算,如果结果为8,则第4位为1,否则就是0;
与16(即2进制数10000)进行And运算,如果结果为16,则第5位为1,否则就是0;
与32(即2进制数100000)进行And运算,如果结果为32,则第6位为1,否则就是0;
与64(即2进制数1000000)进行And运算,如果结果为64,则第7位为1,否则就是0;
与128(即2进制数10000000)进行And运算,如果结果为128,则第8位为1,否则就是0。
简言之就是把每一位都与1进行And运算,如果该位运算结果仍是1,那么该位就肯定是1,因为只有1和1进行And运算结果才是1,而0和1或者0和0运算结果都是0。
或者也可以把这个数与2进行除法运算,如果有余数(即1),则说明第1位为1,否则就是0,然后再继续把商与2进行除法运算,有余数则第2位为1,否则为0,依此类推,直到最后数值为1或0,无法继续除2为止。
说白了,其实就是把这个数转换为二进制数的形式,然后哪个位是1哪个位是0就一目了然了。
1、
Boolean
取决于实现平台
Byte
1 个字节
Char
2 个字节
Date
8 个字节
Decimal
16 个字节
Double
8 个字节
Integer
4 个字节
Long
8 个字节
Object
4 个字节(32 位平台上)
8 个字节(64 位平台上)
SByte
1 个字节
Short
2 个字节
Single
4 个字节
String (变长)
取决于实现平台
UInteger
4 个字节
ULong
8 个字节
用户定义的(结构)
取决于实现平台
UShort
2 个字节
2、
字节
注意只能对整型执行按位运算。浮点值必须转换为整型后,才能执行按位运算。按位运算采用二进制(以 2 为基)形式计算两个整数值。它们比较对应位置上的位,然后基于比较的结果赋值。下面的示例演示了 And 运算符。复制Dim x As Integerx = 3 And 5 前面的示例将 x 的值设置为 1。发生这种情况的原因如下:这些值以二进制形式处理:二进制格式的 3 为 011二进制格式的 5 为 101And 运算符比较这些二进制表示方式,一次比较一个二进制位置(位)。如果给定位置的两个位都为 1,则将 1 放在结果中的该位置。如果任何一个位是 0,则将 0 放在结果中的该位置。在前面的示例中,按如下所示计算结果:011(二进制格式的 3)101(二进制格式的 5)001(二进制格式的计算结果)计算结果以十进制形式处理。值 001 是 1 的二进制表示形式,因此 x = 1。除了在任何一个比较位是 1 或两个比较位都是 1 的情况下将 1 赋予结果位以外,按位 Or 运算与此类似。Xor 在比较的位正好只有一个是 1(而不是两者都是 1)时将 1 赋给结果位。Not 采用单个操作数并反转所有位(包括符号位),然后将该值赋予结果。这意味着,对于有符号正数,Not 始终返回负值,而对于负数,Not 始终返回正值或零。AndAlso 和OrElse 运算符不支持按位运算。 追问: 好复杂啊...还是不会,还有整数怎么转换为二进制数? 回答: 为什么一定要用位运算呢,你那个乘法只能通过左移操作符“ ”来进行,而左移一次代表乘以2,要是乘以一个小数,就必须先化成2的n次方,不够再用加减法调整,很麻烦啊,没必要用位运算啊。。。 追问: 因为我要进行大量的运算,但速度要快,所有用位运算...我也不想啊.. 回答: 那就不该用VB 啊,c/c++在执行效率上是没话说的。 追问: 问题就是不会嘛... 回答: 那你上csdn上发帖效果应该不错 追问: CSDN发了,我发在高性能运算,没人... 回答: 耐心一些,或者你应该发到VB.NET论坛那里。。。 追问: 额..只能这样了... 提问者 的感言: 太复杂了..算了 2010-11-08
"位运算就是对字节或字节内的二进制位数进行测试、抽取、设置或移位等操作。因此位运算不能是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),等等。
长度分别为16位(2字节)和32位(4字节)最大数值65536,可以将扩展的字节数据类型视为长度为8位的无符号整数。
Integer是类型为int的32位整数,long是64位整数,表示范围:-2^63~2^63-1-long是长整数。
在32位机器中,有符号的基本int的范围是-32768到32767(-2^15--2^15-1)。
他们之间没有多大区别。VB是常用的数据类型。
扩展资料:
长整数在C语言:
Int是C语言的基本整数类型,它可以满足我们处理一般数据的需要。C还提供了四个可以修改int的关键字:short、long、signed和unsigned。
使用这四个关键字,C语言标准定义了以下整数类型:
1.短整型,就像整型一样,是有符号整数。
2.longint(缩写:long),带符号整数。
3.LongLongint(缩写:LongLong),由C99标准增加的类型,带符号整数。
4.无符号整型(简称:无符号),无符号整数,不能表示负数。
5.无符号长整型(缩写:无符号长型)。
你不能代表一个负数。
6.无符号短整型,无符号整数,不能代表一个负数。
7.unsignedlonglongint添加类型,无符号整数。
8.默认情况下,所有无符号整数类型都是有符号整数。在这些整数类型前面签名可以让读者更清楚地看到它们这些是有符号整数,尽管有符号或无符号表示有符号整数。例如:有符号的int等于int。
注意,C只指定了短的= int =long int.这取决于编译器。Long int并不总是64位的,很多时候Long int和int的范围是相同的。
位操作用逻辑比较简单
某一位来说,
设为0用 and 0
1 and 0 = 0
0 and 0 = 0
设为1用 or 1
1 or 1 = 1
0 or 1 = 1
设为反向用 xor 1
1 xor 1 = 0
0 xor 1 = 1
你要判断某一位,就用它去and一个那一位等于1的数
例如
判断最高位是不是为1,就看
6 and 128(二进制为1000 0000) 是不是最后还是128(二进制为1000 0000)
因为根据and,如果第一位是1,最后肯定是10000....
如果第一位是0,那就是000000了
判断其它位,你就自己构造and或者or的数就行了
第二位就 and 0100 0000