微積分と物理/論理3
のソース
Unity学習帳2冊目
微積分と物理
/
論理3
のソース
[
トップ
] [
差分
|
バックアップ
|
リロード
] [
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
[ ]
差分
を表示
微積分と物理/論理3
へ行く。
« Prev
TITLE:微積分と物理/論理3 #jsmath **論理表(ビット演算) [#odf9d821] こちらはC#のビット演算向きに論理表を書いています |CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c |論理式|<|<|\(\neg A\)|\(A\wedge B\)|\(A\vee B\)|\(A \underline{\vee}B\)|\(A\rightarrow B\)|\(A\leftrightarrow B\)| |日本訳|<|<|でない|かつ|または|排他|ならば|双条件| |C#ビット演算|<|<|(~A)|(A&B)|(A|B)|(A^B)|(~A|B)|((~A|B)&(~B|A))| |A|B|| | | | | | | |1|1||0|1|1|0|1|1| |1|0||0|0|1|1|0|0| |0|1||1|0|1|1|1|0| |0|0||1|0|0|0|1|1| <メモ> -論理式は括弧の一番深い所から計算を始める -A,BやP,Q,R等を原子式と呼ぶ。原始式にひとつだけ\(\neg\)をつけて作られる\(\neg P \)や\(\neg Q \)のような論理式をリテラルと呼ぶ。\( P,Q,\neg P,\neg P \)などがリテラルとなる -日本語の断言や断定は独立したリテラルとなる(かならずしも「ならば」が利用される訳でない) -「したがって」と「ならば(\(\rightarrow \))」は違う -日本語の句読点(、。)によって終端がはっきりしていれば、そこで論理式による人工言語も「\(,\)」によって区切られる ***真理値分析の真理表 [#o165592c] 例:\(\neg ((P\wedge (P\rightarrow Q))\rightarrow R)\)の真理値分析の為の真理表を完成させよ |CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c |\(P\)|\(Q\)|\(R\)|\(P\rightarrow Q \)|\( P\wedge (P\rightarrow Q) \)|\( (P\wedge (P\rightarrow Q))\rightarrow R\)|\(\neg ((P\wedge (P\rightarrow Q))\rightarrow R)\)| |1|1|1| | | | | |1|1|0| | | | | |1|0|1| | | | | |1|0|0| | | | | |0|1|1| | | | | |0|1|0| | | | | |0|0|1| | | | | |0|0|0| | | | | 原子式がP,Q,Rと3つある時、その真理値の組み合わせは8通りとなる。これを順序良く漏れなく組み合わせを書くには、ある法則に従って書くと良い。1番右のRは1を始めにして1と0を交互に書く。次のQは1を始めとして1と0を二個ずつ交互に書く。次のPは1と0を4個ずつ交互に書く。そうすると8つの場合が綺麗に並ぶことになる 真理分析を行う際は論理式の括弧の内側から計算を始める。\(\neg ((P\wedge (P\rightarrow Q))\rightarrow R)\)の場合、\(P\rightarrow Q \)から始める。C#で計算させる場合でも同様、式の変換は括弧の内側から始める。下記のコードのtotal部分がこの論理式をまとめて書いたものになっている。この時、括弧の計算範囲をしっかり把握し区切る事が重要になっている この論理表の作成にC#を利用してコーディングすると以下になる #code(csharp){{ using UnityEngine; using System.Collections; using System; public class Logic2 : MonoBehaviour { int mask, p, q, r; void Start () { //2進数でint値を設定 p = Convert.ToInt32 ("11110000", 2); q = Convert.ToInt32 ("11001100", 2); r = Convert.ToInt32 ("10101010", 2); //ビットマスク mask = Convert.ToInt32 ("11111111", 2); int PconditonalQ = (~p | q) & mask; // p⇒q int PconjunctionPconditonalQ = (p & PconditonalQ) & mask; // p^(p⇒q) int PconjunctionPconditonalQconjunctionR = (~PconjunctionPconditonalQ | r) & mask; // (p^(p⇒q))⇒r int negationPconjunctionPconditonalQconjunctionR = ~PconjunctionPconditonalQconjunctionR & mask; // ¬((p^(p⇒q))⇒r) int total = (~(~(p & (~p | q)) | r)) & mask; //¬((p^(p⇒q))⇒r) print (Convert.ToString (PconditonalQ, 2).PadLeft (8, '0')); print (Convert.ToString (PconjunctionPconditonalQ, 2).PadLeft (8, '0')); print (Convert.ToString (PconjunctionPconditonalQconjunctionR, 2).PadLeft (8, '0')); print (Convert.ToString (negationPconjunctionPconditonalQconjunctionR, 2).PadLeft (8, '0')); print (Convert.ToString (total, 2).PadLeft (8, '0')); } } }} 計算結果は以下になる。コードの出力した結果と見比べてみて欲しい |CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c |\(P\)|\(Q\)|\(R\)|\(P\rightarrow Q \)|\( P\wedge (P\rightarrow Q) \)|\( (P\wedge (P\rightarrow Q))\rightarrow R\)|\(\neg ((P\wedge (P\rightarrow Q))\rightarrow R)\)| |1|1|1|1|1|1|0| |1|1|0|1|1|0|1| |1|0|1|0|0|1|0| |1|0|0|0|0|1|0| |0|1|1|1|0|1|0| |0|1|0|1|0|1|0| |0|0|1|1|0|1|0| |0|0|0|1|0|1|0| 文法はシンタックス。その文の意味をセマンティクスと呼ぶ。たとえば文の書き方が間違っていた場合、シンタックスエラーになる。その文の意味の解釈が間違っていた場合はセマンティクスエラーとなる
« Prev
微積分と物理/論理3 のバックアップ一覧
微積分と物理/論理3 のバックアップソース(No. All)
1: 2015-08-26 (水) 20:40:59
osinko
2: 2015-08-26 (水) 22:19:08
osinko
現: 2015-08-27 (木) 22:45:29
osinko