用VB语言怎么把数字左移?右移?
发布网友
发布时间:2022-10-10 17:46
我来回答
共2个回答
热心网友
时间:2023-10-09 04:38
第一步,先把整形变量数(有正有负)转化为2进制数存放在一个Byte(0 to 1)中
Dim MyB(1) as byte
if N> =0 then
Myb(0)= N \ 256 //高位
Myb(1)= N mod 256 //低位
else
tmp=N*(-1)
Myb(0)= tmp \256
Myb(1)= tmp mod 256
Myb(0)= Not(Myb(0) and &H80) //将符号位取反
Myb(1)= Not(Myb(1)) +1
//以上两行是先求出正数N的二进制表示方法,然后把最高位置1(这样就是-N的原码了)
//然后把所有位都取反,末尾+1,这样就是-N的补码形式了,在计算机中负数是补码来存放的。
end if
转化好以后就是移位操作了,意味操作代码如下(假定你要移动N位)
For i=1 to N
SaveHi = Myb(0) '保存高位,是为了判断右移时是否向低位字节进1
'以下是右移 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Myb(0) = Myb(0) \ 2 '右移不会溢出的
Myb(1)= Myb(1) \ 2
If ((SaveHi And &H1) = &H1) Then
Myb(1) = Myb(1) Or &H80
End If
Next
如果是左移,也是一样:
For i=1 to N
SaveLo = Myb(1) '保存低位,是为了判断左移时是否向高位字节进1
'以下是右移 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Myb(0) = (Myb(0) * 2) mod &HFF '要取余,不然会溢出
Myb(1) = (Myb(1) * 2) mod &HFF
If ((SaveLo And &H80) = &H1) Then
Myb(0) = Myb(0) Or &H01 '高位进一
End If
Next追问VB中定义多个数怎么定义?用Array吗?
追答对,用数组定义
热心网友
时间:2023-10-09 04:38
说详细点