DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ビット演算

  • 題名: ビット演算
  • 著者: 七資産
  • 日時: 2005/09/30 4:57:50
  • ID: 13029
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[VB.NET]
分類:[.NET]

VisualBasic .NETでビット演算をする方法がわかりません・・・
ふつうにAND演算をしてみたところ一部で演算結果が異常になりました。

&H123456789 And &HFFFFFFFF

の結果が本来&H23456789と結果が出るはずのところ
なぜか&H123456789になってしまいます。

調べてみたところ
ttp://www.microsoft.com/japan/msdn/vs/vb6/vb6tovbdotnet.asp

> Visual Basic .NET では、ビット演算を行うための新しい演算子のセット、BitAnd、BitOr、BitNot、および BitXor が言語に追加されています。
の一文を発見したのですが、そのようなものは発見できず・・・
このページによればVB.NETのAnd演算は論理演算のみ可能でビット演算は
出来ないとのことです。
どのようにすればビット演算を正常に出来るのでしょうか?
デバッグしてみるとわかるのですが、
実は、&HFFFFFFFFは結果として、変数内では-1(10進数)となり、
演算時、ビット上では、
0001 0010 0011 0100 0101 0110 0111 1000 1001
 AND
1111 1111 1111 1111 1111 1111 1111 1111 1111
となってしまうのです。
これを避ける為には、
&HFFFFFFFFを&H0FFFFFFFFで解決すると思いがちですが、[0]は自動補正によって消されてしまいます。
したがって、&HFFFFFFFFL(ロング型強制)もしくは&HFFFFFFFF&(レガシー)
で行ってください。

とりあえず、Micorsoftの参考サイト:ttp://www.microsoft.com/japan/msdn/net/vbnetref/vbnetref3-4.asp
  • 題名: Re[2]: ビット演算
  • 著者: 七資産
  • 日時: 2005/10/02 16:36:20
  • ID: 13070
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
返信ありがとうございます。
教えていただいたとおりにやってみたらできました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板