帮忙看一下VB与运算结果?

来源:百度知道 编辑:UC知道 时间:2024/09/22 08:34:47
Dim status As Integer
sta1 = status And &H8
单步运行发现status为1800(二进制),十六进制为&H708,sta1结果显示为0,不是应该为8吗?到底怎么回事?
1800是十进制,打错了
status的值是从另外指令里面读取过来的
我是执行到下一步再看仍然是0
抱歉问题描述不够全面

Private Sub Command1_Click()
Dim status As Integer
status = 1800
sta1 = status And &H8
MsgBox sta1
End Sub

补充:
二进制1000 就是8
sta1没定义类型,所以用msgbox默认成integer,
你出来0答案可能是刚开始status没赋值1800.

十进制1800的二进制为0000011100001000,十六进制为&H708,&H8 的二进制为00000000000000001000 两数AND sta1应该是TRUE 不可能是8下面排列您应该看得清楚:
0000011100001000
0000000000001000

柳少爷
湖北武汉
2008年6月6日

确实是8
Dim status As Integer
status = 1800
sta1 = status And &H8

&H8 的倒数第4位是1,其余是0
status为1800(二进制),我看不懂,这1800能是“二进制”吗?
只要他的倒数第4位不是1,那sta1 就是0;否则才是8

猜测,你的1800是10进制。先按10进制转换成2进制:11100001000
倒数第4位为1
所以 sta1是数值类型时,其值为8
sta1是逻辑类型时。其值为true
我验证没有出现你说的情况

sta1 = status And &H8
你单步运行到这一步时,因为这一句还没执行,当然sta1=0喽,等执行到下一句,你再看,sta1的值就变成8 了。