プロが教える店舗&オフィスのセキュリティ対策術

MSDNを見ていたら
「Visual Basic 6.0 では、And キーワードは、オペランドの型に応じて論理 AND かビット AND を実行していました 。Visual Basic .NET では、AND は論理 AND しか実行しません。」
と書いてあったのですが両者の違いがわかりません。
また、.NETでビットANDが使えなくなって困ることはないのでしょうか?

A 回答 (2件)

 


> 両者の違いがわかりません。

論理値には通常、真/偽の2値しか存在しません。(PL/SQLにはTRUE/FALSE/NULLの
3値があるが、これは例外的)
数値を論理値に変換すると非ゼロはすべてTrueとなります。

ビット演算については、情報処理資格試験やC言語、TCP/IPの入門書などに解説があります。
簡単な例を示すと、

11 And 17 And 23 → 1

2進数表現では

11 → 01011
17 → 10001
23 → 10111

となり、ビット毎の積は00001となります。
ビット和も同様で、

13 Or 19 Or 23 → 31

13 → 01101
19 → 10011
23 → 10111

13 Or 19 Or 23 → 11111となります。

> Visual Basic .NET では、AND は論理 AND しか実行しません。
> (中略)
> また、.NETでビットANDが使えなくなって困ることはないのでしょうか?

β版段階で仕様変更の話もありましたが、現在のところ、元の仕様(VB6.0と同等)に
戻っています。
VB.NETでは短絡評価用にAndAlso / OrElse 演算子が追加されましたが、And / Or
演算子は短絡評価しないので、注意が必要です。
(他の高級言語では、一般に論理演算は短絡評価)

他言語ですが、類似の質問がありましたので、こちら↓も参考にしてみてください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=489427
    • good
    • 0

IF文などの条件式での論理演算のことじゃないでしょうか?


VB .NET の演算子にビット演算子がないわけではありません。
http://www.microsoft.com/japan/msdn/net/vbnetref …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!