• 締切済み

論理演算の問題です

 AとBがあって、どちらかが真でどちらかが偽のとき、A・Bはなぜ0になるんですか? 存在しないということですか? ベン図を見てもAでなくBである部分は存在しています。

  • jlnh
  • お礼率37% (201/542)

みんなの回答

  • sanori
  • ベストアンサー率48% (5664/11798)
回答No.7

>>>AとBがあって、どちらかが真でどちらかが偽のとき、A・Bはなぜ0になるんですか? 「A・B=1 ですか?」は、「AかつBは真ですか?」 ということ。 それは、 「Aが真で、かつ、Bが真ですか?」 ということ。 AとBの両方とも真でなければ、A・Bは真(1)になれません。 ですから、片方だけでも嘘つきであれば、A・B=0です。 >>> 存在しないということですか? いえ。真ではない(=偽である)ということです。 >>> ベン図を見てもAでなくBである部分は存在しています。 その部分は、BでもないしA・Bでもないので、本題とは関係がありません。

jlnh
質問者

補足

Aであるが真で、Aの否定(Aでない)が偽。これは前提ですか? 「A・B=1 ですか?」は、AもBも真であることが前提ですか? だからAでない∧Bでないが偽になるのですか? A∧Bでないが1になることはありえませんか?

回答No.6

No.4です。 >A・Bは高校のときの集合で習ったA∧Bとは違うのですか? 意味としては、「AかつB」「A AND B」ですから、同じです。しかし、論理代数(ブール代数)と集合論は異なるものです。 理工学系の数学の基礎では、論理演算は、わかりやすいようにベン図を使って教えることが一般的なので(参照URL参照のこと)、混乱されるのは理解できます。しかし、ベン図は、集合論を使って論理式を目で見て理解しやすいように表したものですので、図の交わるところ(共通部分)に要素があるかないか、というような集合論の考え方では十分理解できません。(説明の中で、便宜的に、補集合という言葉を使ってしまったので、かえって混乱させてしまったかもしれませんね。申し訳ありません。) あくまでもベン図で理解しようとすると余計に混乱しますので(A・BはA・Bでしかありませんから)、真理値表の組合せで理解した方がよいと思います。

参考URL:
http://www.asp.sie.dendai.ac.jp/ed/ea2003/ea-k004.html
  • secretd
  • ベストアンサー率39% (50/126)
回答No.5

「かつ」「または」とか、「AND」「OR」とか言う言葉は論理演算でも集合でも用いるので、誤解していると思います。 論理演算と集合は違います。論理演算のときにはベン図なんて使いません。存在する、存在しない、というのは、集合の場合に「要素が」集合に入っているかどうかを考えるときに使うものです。ですから、論理演算のときに「存在しない」なんてことばを使っていること自体間違いです。 論理演算とは、ひとつの計算ルールの取り決めです。変数(AとかBとか)が真(TRUE)であるか、偽(FALSE)であるとき、全体の式が真であるか偽であるかを決めるためのものです。 A・B(AかつB)というのは、AもBも両方とも真(TRUE)の場合のみ、式全体を真とする、という「定義」です。ですから、質問の「片方が偽」であれば、A・Bが偽になるのも定義です。なぜ、というものではありません。 最後に。真、偽とか書いてると大変なので、真を1、偽を0で表現することがあります。だから、A・Bの結果は片方が偽であれば全体は偽で、数字で表せば0です。

回答No.4

ベン図で「AでなくBである部分がある」と考えているということから推測すると、「Aが偽である」ということを、「Aの補集合(Aの否定=Aに含まれない全ての要素の集合)がある」ということと等しいとお考えになって混乱されているのではないかと思います。 Aが偽であるということと、Aの否定である集合(補集合)が存在するというのは別の話です。(もし、同じ話(同じ意味)であれば、Aが真のときには、Aではない集合(補集合)は存在しなくなってしまいます。) ベン図の「Aの補集合」は、Aが真か偽かにかかわらず、「Aの否定=Aではない集合」を意味します。Aの値は関係ありません。 つまり、ベン図の上でも式の上でも、AとBの論理積(A・B)を Aの否定とBの論理積((NOT A)・B)で置き換えることはできません。置き換えた場合、意味が変わってしまいます。AとBの論理積を考えるのであれば、他の回答者さまが書かれているように、A・Bの式にそのままAとBの値を当てはめるしかありません。

jlnh
質問者

補足

A・Bは高校のときの集合で習ったA∧Bとは違うのですか?

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.3

A・B って、AとBの論理積って事でいいんですよね? だったら、xと同じだから 1x0=0 0x1=0 ベン図って部分が気になりますが・・・???

noname#65902
noname#65902
回答No.2

> A・Bはなぜ0 場合が少ないので当てはめてみても明らかですね。 A=真 で B=偽 → A・B = 偽 A=偽 で B=真 → A・B = 偽 > 存在しないということですか 何が存在しないと?意味がわかりません。 論理演算は結果が「真」か「偽」のいずれかになるものです。 というか、 そのようなルールに作られた考え方です。 ここでは結果は「必ず偽になる」のであり、「偽」が存在します。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>A・Bはなぜ0になるんですか? 存在しないということですか? 偽ということ。

関連するQ&A

  • エクセルの論理演算について

    A,Bが等しいかどうかの場合、A=B 真なら1 偽なら0 を返す AよりもBが大きいかどうか、 A<B 真なら1 偽なら0 を返す では質問ですが、A,Bが等しくないならば..はどのように記述するのでしょうか。A<>B, A><B, A.ne.B(←これはフォートラン) 今、必要なのは文字列の不一致なのですが。 また、1つ驚いたのですが、A>Bの比較の場合、A,Bのどちらかに数値としての大小比較できないもの(空白の文字、カンマなど)があると驚いたことに1を返すようです。論理演算の対象ではないと判断したら1を返すというのは確か基本なのかも知れませんが、常識からはかなり逸脱しています。ある行が無効となっており数値のところに全角のカンマみたいなものがあり、これを使って当然ゼロと評価すべきところを1と評価して集計してしまうということがありました。 エクセルは複雑に集計するような場合、相当習熟していないと大変大きな失敗を犯すことがあるようです。 以上、よろしくお願いします。

  • 論理演算の問題です

    添付した論理回路図を論理式にすると、 A・¬B+¬A・B になるようですが、どうも納得出来ません。 解説をおねがいします。 あと、 A・(¬A+B)=A・B の解説もお願いします。

  • 論理学の問題なのですが

    この問題のときかたを教えてください。 論理式が真か偽か、偶然的かを判定して真式にはA,偽式にはB、偶然式にはCを。 (1) ~pVq⊃q (2) ~(pVq)≡(p&q) (3) (p⊃q)V(~q⊃~p) (4) ~(p&q⊃(~p⊃q)) (5) (~pVq)&(q⊃r)⊃(p⊃r)

  • 論理演算子は・・・

    論理演算子&&(~と…を同時に満たすときだけ「真」)は、 例えば、(a<b && b<c && c<d) のように、「&&」を2回使う事はできるのでしょうか? また、(a<b || b<c && c<d)のような使い方は可能でしょうか。 教えていただきたいです。

  • 論理演算子について

    ◎1----------------------------- int main(void) { int a=10,b=20; while(1){ if(a= =12 && b= =25){ break; } ++a; ++b; } return 0; } -------------------------------- ◎2------------------------------------------------------- #include<stdio.h> #include<ctype.h> int main(void) { char ss[256]="10%%'%shin(no((100!w**a'16&'shi&%$#n~|=~de)&64"; int dt,i=0; printf("右の文字列には言葉が隠れています: "); printf("%s\n",ss); puts(""); printf("1を入力すると言葉が分かります: "); scanf("%d",&dt); puts(""); while(dt!=1 && ss[i] !='\0'){ if( !isalnum(ss[i]) ){ ss[i]=' '; } ++i; } printf("%s\n",ss); puts(""); return 0; } ------------------------------------------------------------ 以上2つのプログラムにおいて疑問があります。 まず◎1のプログラムで、aが12、bが25になるという2つの条件を満たしたら、プログラムを終了させようと思ったのですが、条件を満たしても、ずっとデクリメントし続け終了しません。 「if(a= =12 && b= =25)」の部分を「if(a= =12 || b= =25)」とすれば、aが12になった時点で終了しました。 ◎1では「if(a= =12 && b= =25)」という条件が何故適用されないかという疑問があります。 次に、◎2ではdtが1になり、配列ssに格納されている文字列が、'\0'になるという2つの条件を満たしたら終了させようとしたのですが、1を入力すると、「ss[i]!='\0'」の条件が偽にもかかわらず、while文が一度も実行されませんでした。 そこで、1以外を入力すると、while文は実行されましたが、dtの条件が真になる事はないのに、ちゃんと終了しました。 プログラム◎1、◎2について何故こうのようになってしまうのか、教えていただければ嬉しいです。

  • 論理演算について

    Cを勉強中の者です。論理演算についてよくわからいことがあります。 以下のソースコードを実行し結果が真なら0001、偽なら0000が出力されるプログラムを作りました。 #include <stdio.h> int main(void) { unsigned short a = 0x1234; unsigned short b = 0xfafc; unsigned short c = 0xcdef; unsigned short x, y; x = a && b; y = b && c; printf("x=%04x\n", x); printf("y=%04x\n", y); return 0; } 結果はx=0001, y=0001となります。y=0001はbとcの文字列がそれぞれfとcをを持っているので演算による結果は納得できますが、x=0001はaとbの文字列には共通するものがないのになぜx=0000ではないのでしょうか? また0xが頭に付く表現は16進数だと強調するためにあるのですか? 説明に不足があればまた足しますのでよろしくお願いします。

  • 「命題AとBには論理積の関係がある」←正しい言い方

    命題Aと命題Bについて次の4つの関係が成り立つ時、 A∧B→真 A∧¬B→偽 ¬A∧B→偽 ¬A∧¬B→偽 下記の言い方は合ってますか? 1.「AとBには論理積の関係がある」 2.「AとBの論理積は真であり、AとBの否定論理積は偽である」 より適切なものがあれば教えて下さい。

  • 論理の問題

    「a^2+b^2=0⇒a+b=0」は真 の理由が分かりません。 この命題が真である理由を教えてください。

  • 論理演算、どう解けば?

    論理演算を解く際に、図を描いたり(AとBが重なった絵)、1と0の真理値表を書いたりしますよね。 どちらを使って解くべきなのでしょうか?

  • 論理数学で条件節が理解できない

    命題Aが真のときに命題Bが偽ならばなんでA→Bが偽になるんですか? 理解しかねます わかりやすく説明しているサイトを教えてください。