首页
社区
课程
招聘
再次求助,vb编程问题
发表于: 2005-7-29 22:01 3750

再次求助,vb编程问题

2005-7-29 22:01
3750
如下程序:
Private Sub Command1_Click()
Text1.Text = &HA1111111 / &H100  '右移,坛主说了:“shr ebx 8 =  ebx/0x100”
End Sub
Text1.text中的内容(转换为十六进制后)为什么不是想象中的&H00A11111呢?结果反而是&HFFA11112,我发现&A1111111转换到十进制是个负数!   怎样才能让结果为&H00A11111呢?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
2
和你说过要注意VB中没有无符号数嘛。

给你一个例子吧:
Dim a As Long
Dim b As Long
Dim c As Long

a = &HA1111111 '你要移位的数
b = 8          '右移的位数
If a And &H80000000 <> 0 Then
    c = (a And &H7FFFFFFF) \ (2 ^ b) + 2 ^ (31 - b)
Else
    c = a \ (2 ^ b)
End If
2005-7-30 10:26
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
太深奥拉,是在看不懂啊,用负数的话结果是对的,可是正数反而不对了,
能再解释一下么?谢谢
2005-7-30 14:21
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我知道为什么要以移位的正数结果不对了,If后应改为(a and &H7FFFFFFF)<>0,应该加个括号就对了,
可我不明白这两句:c = (a And &H7FFFFFFF) \ (2 ^ b) + 2 ^ (31 - b)
                  c = a \ (2 ^ b)
请您解释一下,谢谢
2005-7-30 15:06
0
雪    币: 343
活跃值: (611)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
5
带符号数的最高位是符号位。
2005-7-30 20:34
0
游客
登录 | 注册 方可回帖
返回
//