ページ 11

Dim a As QWordがInt64になっているかもしれない。

Posted: 2005年12月07日(水) 11:21
by YS
32bit*2の64bit計式で示されるファイル時間を強引に
32bitに圧縮しようとして気が付いたのですが、

#N88BASIC
Do
Qbit()
Dbit()
Sleep(INFINITE)
Loop


Sub Qbit()
Dim a As DWord
Dim b As DWord
Dim c As QWord
a=&HFFFFFFFF
b=&HFFFFFFFF
c=a
print a
print (c<<32 or b)
End Sub


Sub Dbit()
Dim a As Word
Dim b As Word
Dim c As DWord
a=&HFFFF
b=&HFFFF
c=a
print a
print (c<<16 or b)
End Sub


2つのDWordからQWordを作る関数がなかったので、
変な事をしてますが、このソースを実行すると、
Dbit()の表示は

65535
4294967295

で正常なのですが、Qbit()の表示が

4294967295
-1

となってしまいます。

また、QWord()のa=&HFFFFFFFFをa=&H7FFFFFFFにすると
表示は+ですが、a=&H8FFFFFFFにすると-になるので
どうやら先頭ビットが符号になっているみたいでした。