纠正一下Gutta(冯大狂)的做法,首先是可以不用区分正负的。然后就是在计算机种内存种高位应该放在后面。下面的方法适合Integer型,如果是Long型需要更多位的计算。
Dim MyB(1) as byte
Myb(1)= (N and &hff00)\&h100 //高位
Myb(0)= N and &hff //低位
第一步,先把整形变量数N(有正有负)转化为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