こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VisualBasic 2005 にてプログラミングの学習を行っている

VisualBasic 2005 にてプログラミングの学習を行っているのですが、
疑問があるので質問させて頂きました。

以下のようなコードで

1 Dim aa As Integer
2 Dim lFlg As Long
3 aa = &H80I
4 Label1.Text = aa.ToString
5 lFlg = aa And &HFFFFFFFFL
6 Label2.Text = aa.ToString

5行目の「And &HFFFFFFFFL」にて論理積を求めているかと思うのですが、
何故このような処理が必要であるかが、分かりません。

仮に「And &HFFFFFFFFL」の記述が無くても変数「lFlg」には128が入って
いました。

理由が分かる方がいらっしゃれば教えてもらえると助かります。

以上です。

投稿日時 - 2010-07-22 10:22:26

QNo.6055669

困ってます

質問者が選んだベストアンサー

 記載されたコードの範囲ではとくに意図があるようには思えませんが、おそらく、aaの値を符号付き整数型の値としてではなく、aaのビット並びをそのまま収めた値としてIFlgに代入したいのでしょう。

 コードのようにaaの値の符号が正の場合は変わりませんが、負の場合にはそのまま代入するとIFlgの上位32bitにはB'1'が埋まった状態になります。符号付き整数としての値は等しいのですが、ビット並びが違ってきます。
 これを、aaのビット並びそのままの場合の正の数(あるいは符号なしの整数)として取り出すにはコードのような論理積を行います。

投稿日時 - 2010-07-22 12:49:34

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問