新しく発言する  EXIT  インデックスへ

論理演算や集合演算の計算して、その結果を...


  論理演算や集合演算の計算して、その結果を真理値表やベン図で表す 山中和義 2008/03/08 14:38:52  (修正1回)
論理演算や集合演算の計算して、その結果を真理値表やベン図で表す  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/03/08 14:38:52 ** この記事は1回修正されてます

!論理演算や集合演算の式を計算して、その結果を真理値表やベン図で表す

!●論理演算
!<式>::=<項> { + <項> }*
!<項>::=<因子> { * <因子> }*
!<因子>::={ <数> | ( <式> ) } { ' }*
!<数>::={ <変数> | <整数> }
!<変数>::={ A | B | C | D | … | X | Y | Z } ※小文字は大文字として扱う
!<整数>::=<数字> ※0,1

!●集合演算、命題
!<命題>::=<式> { { ⇒ | ⇔ } <式> }*
!<式>::=<項> { { ∪ | - } <項> }* ※∨,|も可能
!<項>::=<因子> { ∩ <因子> }* //∧,&も可能
!<因子>::={ ¬ }* { <数> | ( <命題> ) } ※〜,!も可能
!<数>::={ <関数> | <変数> }
!<関数>::={
!     φ | //空集合
!     Ω  //普遍集合
!     }
!<変数>::={ A | B | C | D | … | X | Y | Z } ※小文字は大文字として扱う


LET N=3 !変数の数

DIM vTBL(26) !変数A〜Z ※真理値表ビットパターン(2^N 桁)
LET vTBL(1)=BVAL("00001111",2) !A
LET vTBL(2)=BVAL("00110011",2) !B
LET vTBL(3)=BVAL("01010101",2) !C
LET vTBL(21)=BVAL("11111111",2) !U=Ω

DIM cTBL(0 TO 1) !定数
LET cTBL(0)=BVAL("00000000",2) !0,φ
LET cTBL(1)=BVAL("11111111",2) !1,Ω

DIM stack_Eval(50) !式の計算用のスタック
LET sp_Eval=0 !スタックポインタ


!ビット単位の論理演算
DEF AND(x,y)=MIN(x,y) !論理積
DEF OR(x,y)=MAX(x,y) !論理和
DEF NT(x)=1-x !否定 ※2値論理

!ビット演算
FUNCTION BitAND(v1,v2) !ビットAND f=v1&v2
LET vv=0
FOR i=2^N-1 TO 0 STEP -1
LET vv=vv*2+AND(Bit(v1,i),Bit(v2,i))
NEXT i
LET BitAND=vv
END FUNCTION
FUNCTION BitOR(v1,v2) !ビットOR f=v1|v2
LET vv=0
FOR i=2^N-1 TO 0 STEP -1
LET vv=vv*2+OR(Bit(v1,i),Bit(v2,i))
NEXT i
LET BitOR=vv
END FUNCTION
FUNCTION BitNOT(v) !ビット反転 f=!v
LET vv=0
FOR i=2^N-1 TO 0 STEP -1
LET vv=vv*2+NT(Bit(v,i))
NEXT i
LET BitNOT=vv
END FUNCTION
  つづき(真理値表、ベン図) 山中和義 2008/03/08 14:41:15 
  │└つづき(式の評価eval) 山中和義 2008/03/08 14:43:25  (修正1回)
  │ └つづき 山中和義 2008/03/08 14:44:12  (修正1回)
  │  └つづき 山中和義 2008/03/08 14:44:53 
  │   └つづき(メイン) 山中和義 2008/03/08 14:46:11  (修正1回)
  真理値表(truthtable)から論理式(論理関... 山中和義 2008/03/10 10:55:33 
  !真理値表から多変数多項式をつくる 山中和義 2008/04/08 14:22:27 

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。