• ベストアンサー

VBAで(a and b ) =cという計算方法について

他の質問コーナーで自分の希望に合ったサンプルを教えていただきまして、疑問は解決したのですが、どうしても中身までを理解したいと思っております。 例えば、a=5、b=3とした場合、(a and b ) = 1となるのは、なぜでしょうか?どのように算出すれば良いのでしょう。 b=4とすると、=4となります。理解できません。よろしくお願いします。

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

  • ベストアンサー
noname#79209
noname#79209
回答No.3

#2です。 ちなみに、ORとXORを解説しておきます。 ORは双方の各桁のどちらかあるいは両方が1の時に1となります。従って 5 = 00000101 3 = 00000011 -------------or 両方で同じ桁のどちらかあるいは両方が1なのは 7= 00000111    右の3桁分なので また、 5 = 00000101 4 = 00000100 -------------or 両方で同じ桁のどちらかあるいは両方が1なのは 5 = 00000101   右端と右から3桁目なので XORは双方の各桁のどちらかのみが1の時に1となります。従って 5 = 00000101 3 = 00000011 -------------xor 両方で同じ桁のどちらかのみが1なのは 6 = 00000110    右から2桁目と右から3桁目なので また、 5 = 00000101 4 = 00000100 -------------xor 両方で同じ桁のどちらかのみが1なのは 1 = 00000001    右端の桁のみなので ご参考まで...

ponpon7
質問者

お礼

即答かつご丁寧に解説いただきましてありがとうございました。そのようなルールで計算されているのですね。10進数を2進数に変換して考えて、出てきた答えを10進数に直せば良いのですね。とてもよく解りました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.4

前回の質問時に回答したものです。 分かりにくい説明で申し訳ありませんでした。 ANDのビット演算については諸氏が説明くださったとおりです。 2進数は 1 000001 ・・・ 2の0乗 2 000010 ・・・ 2の1乗 4 000100 ・・・ 2の2乗 8 001000 ・・・ 2の3乗 と各ビットは2のべき乗で表すことが出来ます。 目的の数字Xを2進数にしたときのn桁目が1であれば、2のn-1乗との論理積が2のn-1乗となり、0であれば論理積は0となります。

ponpon7
質問者

お礼

その節は、すばらしいサンプルをありがとうございました。ようやく理解する事ができました。2進数を学ぶきっかけともなり、感謝しております。

すると、全ての回答が全文表示されます。
noname#79209
noname#79209
回答No.2

5 and 3は各ビットごとにANDをとりますから 双方の各桁がともに1の時に1となります。従って 5 = 00000101 3 = 00000011 -------------and 両方で同じ桁が1なのは一番右の桁だけなので 1 = 00000001 また、 5 = 00000101 4 = 00000100 -------------and 両方で同じ桁が1なのは右から3番目の桁だけなので 4 = 00000100 となります。

すると、全ての回答が全文表示されます。
  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

AND OR XOR NOT等はビット演算とよばれ、二進数に置き換えてから各ビットを見ます。 例となる5の場合は 101となり4と1のビットが立っているのでAND演算は貴方の書かれた通りになります。

すると、全ての回答が全文表示されます。

関連するQ&A