VB中的位操作函数,对字节中的一位进行操作
在VB中的数据类型,最小的是BYTE,也就是一个字节,一个字节是8位,请问如何对其中的一位进行操作,对其中的一位置0或置1。或者有没有一位的数据类型!!!...
在VB中的数据类型,最小的是BYTE,也就是一个字节,一个字节是8位,请问如何对其中的一位进行操作,对其中的一位置0或置1。或者有没有一位的数据类型!!!
展开
2个回答
展开全部
"位运算就是对字节或字节内的二进制位数进行测试、抽取、设置或移位等操作。因此位运算不能是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),等等。
以上摘自《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),等等。
展开全部
没有。
用整型的算逻运算就可以实现这些功能。
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
比如把最高位设为1就写
int(变量名) or 128 (二进制为1000 0000)
二进制示意:
XXXX XXXX or 1000 0000 = 1XXX XXXX
把第三位设为0就写
int(变量名) and 251(二进制为1111 1011)
二进制示意:
XXXX XXXX and 1111 1011 = XXXX X0XX
用整型的算逻运算就可以实现这些功能。
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
比如把最高位设为1就写
int(变量名) or 128 (二进制为1000 0000)
二进制示意:
XXXX XXXX or 1000 0000 = 1XXX XXXX
把第三位设为0就写
int(变量名) and 251(二进制为1111 1011)
二进制示意:
XXXX XXXX and 1111 1011 = XXXX X0XX
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |