SlideShare a Scribd company logo
1 of 25
Download to read offline
真理とは何か
@tsuda_ahr
LTDD #21
これから真理について述べる。
真理値表
False True
False False False
True False True
False True
False False True
True True True
AND
OR
IT技術者にとっての真理ってこれだよね!
しかしこれは2値論理の場合
3値論理の場合の真理値表
False Unknown True
False False False False
Unknown False Unknown Unknown
True False Unknown True
AND
OR
False Unknown True
False False Unknown True
Unknown Unknown Unknown True
True True True True
3値論理とは
• 主に データベースとかで使用。
• True / False に加えて Unknown (≒ null) のある体系
確かめてみる (oracle)
• 比較
• 真
select 1 from dual where ('1' = '1');
• 偽
select 1 from dual where not('1' = '0');
• Unkhown
select 1 from dual where ('1' = null);
select 1 from dual where not('1' = null);
どちらもヒット
しない
ヒットする
ヒットする
※上記は、http://sqlfiddle.com/ で Oracle 11g に設定して確認することができます。
確かめてみる (oracle)
• AND
select 1 from dual
where (1 = 1) and (null = null);
select 1 from dual
where not((1 = 0) and (null = null));
• OR
select 1 from dual
where (1 = 1) or (null = null);
select 1 from dual
where not((1 = 0) or (null = null));
True
False
Unkown
※上記は、http://sqlfiddle.com/ で Oracle 11g に設定して確認することができます。
確かめてみる (oracle)
• AND
select 1 from dual
where (1 = 1) and (null = null);
select 1 from dual
where not((1 = 0) and (null = null));
• OR
select 1 from dual
where (1 = 1) or (null = null);
select 1 from dual
where not((1 = 0) or (null = null));
ヒットしない [Unknown判定]
ヒットする [not(False)判定]
ヒットしない [Unknown判定]
ヒットする [True判定]
※上記は、http://sqlfiddle.com/ で Oracle 11g に設定して確認することができます。
3値論理の論理演算結果の覚え方
False (=0) Unknown (=1.5) True (=1)
False (=0) False False False
Unknown (=1.5) False Unknown Unknown
True (=1) False Unknown True
AND
OR
False (=0) Unknown (=1.5) True (=1)
False (=0) False Unknown True
Unknown (=1.5) Unknown Unknown True
True (=1) True True True
False < Unknown < True を満たす数値をてきとーに割り当てて、
・AND は値のもっとも小さいもの
・OR は値のもっとも大きいもの
が結果になります。
ちなみに null と NaN は違う (oracle)
create table test (
a BINARY_FLOAT
);
insert into test values (1000000.0);
insert into test values (0.0000001);
insert into test values (BINARY_FLOAT_INFINITY);
insert into test values (BINARY_FLOAT_NAN);
insert into test values (NULL);
select * from test where a > 0
※上記は、http://sqlfiddle.com/ で Oracle 11g に設定して確認することができます。
null はヒットしないが、
NaN はヒットする
Order by だと null が最大になる?
• 処理系依存。
• データベースによって異なる。
• 指定で変えられる。 (oracle)
• select * from test order by a nulls first
• select * from test order by a nulls last
3値論理は理解できただろうか?
それではこれから
9値論理
について述べる
9値論理
Character 意味
'U' uninitialized 未初期化
'X' strong drive, unknown logic value 強い 不明
'0' strong drive, logic zero 強い 0
'1' strong drive, logic one 強い 1
'Z' high impedance ハイインピーダンス
'W' weak drive, unknown logic value 弱い 不明
'L' weak drive, logic zero 弱い 0
'H' weak drive, logic one 弱い 1
'-' don't care 不関知
なにこれ?
• VHDL という言語で定義されている論理型 (std_logic 型)
• IEEE1164 に定義されている。
https://en.wikipedia.org/wiki/IEEE_1164
• 3値論理と違って数学的な論理ではなく、電気回路にとって都合がよいように定義して
いる(のだと思う)
9値論理の場合の真理値
and
U X 0 1 Z W L H - /
U U 0 U U U 0 U U U
X 0 X X X 0 X X X
0 0 0 0 0 0 0 0
1 X X 0 1 X 1
X X 0 X X Z
X 0 X X W
0 0 0 L
1 X H
X -
or
U X 0 1 Z W L H - /
U U U 1 U U U 1 U U
X X 1 X X X 1 X X
0 1 X X 0 1 X 0
1 1 1 1 1 1 1
X X X 1 X Z
X X 1 X W
0 1 X L
1 1 H
X -
not
U X 0 1 Z W L H -
U X 1 0 X X 1 0 X
ところで「不明」は null っぽいとしても、「強い」「弱い」って何よ?
Character 意味
'U' uninitialized 未初期化
'X' strong drive, unknown logic value 強い 不明
'0' strong drive, logic zero 強い 0
'1' strong drive, logic one 強い 1
'Z' high impedance ハイインピーダンス
'W' weak drive, unknown logic value 弱い 不明
'L' weak drive, logic zero 弱い 0
'H' weak drive, logic one 弱い 1
'-' don't care 不関知
強い
弱い
答え。
• 強い信号と弱い信号が衝突した場合、強い信号が有効になる。
resolution
U X 0 1 Z W L H - /
U U U U U U U U U U
X X X X X X X X X
0 X 0 0 0 0 X 0
1 1 1 1 1 X 1
Z W L H X Z
W W W X W
L W X L
H X H
X -
解決関数という謎のしくみがある
なぜ、強い信号と弱い信号があるのか
• 多分、抵抗の存在を省略して、プルアップ回路やプルダウン回路を表現したかったから。
• 本当のところは知りません。だれか教えてください(汗
Vcc
GND
OUT
ここは「強い1」 ( =‘1’ )
ここは「弱い0」 ( =‘L’ )
解決関数の注意点
• ただ、実際のところ、マルチドライバー(複数の信号を一つの入力に割り当てる)は、
FPGAデバイス実機に対しては有効でない。(少なくとも Spartan 3E は)
• テストベンチ用のコードなど、シミュレーションでは有効。
• 言語仕様上有効だからと言って、実際にデバイスに適用できるわけではない点に注意。
さて。
9値論理は理解できただろうか?
わけがわかりません(汗
ご清聴ありがとうごさいました

More Related Content

More from tsudaa

ぬぎんくす問題
ぬぎんくす問題ぬぎんくす問題
ぬぎんくす問題tsudaa
 
Windows でも時刻合わせがしたい!
Windows でも時刻合わせがしたい!Windows でも時刻合わせがしたい!
Windows でも時刻合わせがしたい!tsudaa
 
Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介tsudaa
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロtsudaa
 
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返るHiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返るtsudaa
 
ドメイン名の話 (データベース/SQL)
ドメイン名の話 (データベース/SQL)ドメイン名の話 (データベース/SQL)
ドメイン名の話 (データベース/SQL)tsudaa
 
スターマークの話
スターマークの話スターマークの話
スターマークの話tsudaa
 
Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ (大都会ver)Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ (大都会ver)tsudaa
 
昼の12時は午○何時?
昼の12時は午○何時?昼の12時は午○何時?
昼の12時は午○何時?tsudaa
 
PowerShell 紹介
PowerShell 紹介PowerShell 紹介
PowerShell 紹介tsudaa
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題tsudaa
 
資格は役に立つか
資格は役に立つか 資格は役に立つか
資格は役に立つか tsudaa
 
○○型言語と呼ばれるために備えるべき最低限の条件についての検討
○○型言語と呼ばれるために備えるべき最低限の条件についての検討○○型言語と呼ばれるために備えるべき最低限の条件についての検討
○○型言語と呼ばれるために備えるべき最低限の条件についての検討tsudaa
 
文字数はおいくら?(Ruby版)
文字数はおいくら?(Ruby版)文字数はおいくら?(Ruby版)
文字数はおいくら?(Ruby版)tsudaa
 
法律の読み方とか
法律の読み方とか法律の読み方とか
法律の読み方とかtsudaa
 
C++入門?
C++入門?C++入門?
C++入門?tsudaa
 

More from tsudaa (16)

ぬぎんくす問題
ぬぎんくす問題ぬぎんくす問題
ぬぎんくす問題
 
Windows でも時刻合わせがしたい!
Windows でも時刻合わせがしたい!Windows でも時刻合わせがしたい!
Windows でも時刻合わせがしたい!
 
Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロ
 
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返るHiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
 
ドメイン名の話 (データベース/SQL)
ドメイン名の話 (データベース/SQL)ドメイン名の話 (データベース/SQL)
ドメイン名の話 (データベース/SQL)
 
スターマークの話
スターマークの話スターマークの話
スターマークの話
 
Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ (大都会ver)Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ (大都会ver)
 
昼の12時は午○何時?
昼の12時は午○何時?昼の12時は午○何時?
昼の12時は午○何時?
 
PowerShell 紹介
PowerShell 紹介PowerShell 紹介
PowerShell 紹介
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題
 
資格は役に立つか
資格は役に立つか 資格は役に立つか
資格は役に立つか
 
○○型言語と呼ばれるために備えるべき最低限の条件についての検討
○○型言語と呼ばれるために備えるべき最低限の条件についての検討○○型言語と呼ばれるために備えるべき最低限の条件についての検討
○○型言語と呼ばれるために備えるべき最低限の条件についての検討
 
文字数はおいくら?(Ruby版)
文字数はおいくら?(Ruby版)文字数はおいくら?(Ruby版)
文字数はおいくら?(Ruby版)
 
法律の読み方とか
法律の読み方とか法律の読み方とか
法律の読み方とか
 
C++入門?
C++入門?C++入門?
C++入門?
 

真理とは何か