[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

コンピュータIIL(情報科学入門)第3回

目次 索引
3.1 真理値の表現
3.1.1 真理値
3.1.2 論理演算
3.1.3 論理型
3.1.4 ビット列
3.2 演習3
3.3 レポート課題
3.4 参考文献
AND  NOT  OR  XOR  原子命題  真理値  真理値表  同値  排他的論理和  ビット列  否定  命題  論理演算子  論理型  論理結合子  論理積  論理値  論理和 

3.1 真理値の表現

3.1.1 真理値

コンピュータの扱うデータの中では、数値に並んで真理値というものも重要です。

命題proposition )とは、真偽がはっきり定まる表現のことです。 例えば、「5は6より小さい」という表現は真の命題です。 また、「8は7より小さい」という表現は偽の命題です。

命題の持つ、この真と偽という値を、 真理値truth-value )または 論理値logical value )と呼びます。 真理値は、しばしば記号TとFで表されます。 また、ビットと対応させ、1と0で表されることもあります。

表 3.1  真理値を表す記号
真理値 記号 ビット
T 1
F 0

3.1.2 論理演算

数値は、100+200 のような四則演算ができます。 命題にも、「5は6より小さい、かつ、8は7より小さい」のような演算があります。

これ以上分解できない命題を 原子命題atomic proposition )と呼びます。 命題の演算を表す記号を、 論理演算子logical operator )または 論理結合子logical connective )と呼びます。 命題は、原子命題と論理演算子から構成されます。 論理演算子には、論理積(AND)、論理和(OR)、否定(NOT)などがあります。

論理積conjunction )は、「かつ」を意味する演算です。 つまり、両方が真のときに真となります。 英語の"and"に対応しますので、 AND とも表されます。 記号では∧と書きます。

表 3.2  論理積の演算規則
P Q PQ P Q PQ
T T T 1 1 1
T F F 1 0 0
F T F 0 1 0
F F F 0 0 0

論理和disjunction )は、「または」を意味する演算です。 つまり、少なくとも一方が真のときに真となります。 英語の"or"に対応しますので、 OR とも表されます。 記号では∨と書きます。

表 3.3  論理和の演算規則
P Q PQ P Q PQ
T T T 1 1 1
T F T 1 0 1
F T T 0 1 1
F F F 0 0 0

否定negation )は、「〜でない」を意味する演算です。 つまり、真ならば偽、偽ならば真となります。 英語の"not"に対応しますので、 NOT とも表されます。 記号では¬と書きます。

表 3.4  否定の演算規則
P ¬P P ¬P
T F 1 0
F T 0 1

論理和と「または」には微妙な違いがあります。 普通、「または」と言えば、両方は意味しないからです。 片方が真のときに真となる演算は、 排他的論理和exclusive disjunction )と呼ばれます。 これは XORexclusive OR )とも表され、記号では丸の中にプラスの(+)です。

表 3.5  排他的論理和の演算規則
P Q P(+)Q P Q P(+)Q
T T F 1 1 0
T F T 1 0 1
F T T 0 1 1
F F F 0 0 0

原子命題の真理値がどのような組み合わせであっても2つの命題の真理値が一致することを、2つの命題は 同値equivalence )であると言います。 例えば、命題 ¬( PQ ) と (¬ P )∨(¬ Q ) は同値です。 つまり、「 PQ も、ではない」と「 P でないか、 Q でないか」は同じ意味であるということです。

2つの命題が同値かどうかは、真理値表で確かめられます。 真理値表truth-table )とは、原子命題の真理値のすべての組み合わせの演算をまとめた表のことです。

例題1. 命題 ¬( PQ ) と (¬ P )∨(¬ Q ) が同値であることを、真理値表を作成して証明してください。

解答例1.

表 3.6  命題 ¬( PQ ) の真理値表
P Q PQ ¬(PQ)
T T T F
T F F T
F T F T
F F F T
表 3.7  命題 (¬ P )∨(¬ Q ) の真理値表
P Q ¬P ¬Q P)∨(¬Q)
T T F F F
T F F T T
F T T F T
F F T T T

例題2. 命題 ( PQ )∨ R と ( PR )∧( QR ) が同値であることを、真理値表を作成して証明してください。

解答例2.

表 3.8  命題 ( PQ )∨ R の真理値表
P Q R PQ (PQ)∨R)
T T T T T
T T F T T
T F T F T
T F F F F
F T T F T
F T F F F
F F T F T
F F F F F
表 3.9  命題 ( PR )∧( QR ) の真理値表
P Q R PR QR (PR)∧(QR)
T T T T T T
T T F T T T
T F T T T T
T F F T F F
F T T T T T
F T F F T F
F F T T T T
F F F F F F

3.1.3 論理型

論理型logical type

表 3.10  Javaの論理型における真理値と演算子
真理値と演算子 一般的な記号 Javaプログラム
T true
F false
論理積 &&
論理和 ||
否定 ¬ !
/*  1*/ class Ex3 {
/*  2*/     public static void main (String[] args) {
/*  3*/         boolean x = (5 < 6);
/*  4*/         System.out.println(x);
/*  5*/     }
/*  6*/ }
b04a001@AsiaA1:~/comp2l% javac Ex3.java
b04a001@AsiaA1:~/comp2l% java Ex3
true
b04a001@AsiaA1:~/comp2l%
...
/*  3*/         boolean x = (8 < 7);
...
b04a001@AsiaA1:~/comp2l% javac Ex3.java
b04a001@AsiaA1:~/comp2l% java Ex3
false
b04a001@AsiaA1:~/comp2l%
...
/*  3*/         boolean x = true;
...
b04a001@AsiaA1:~/comp2l% javac Ex3.java
b04a001@AsiaA1:~/comp2l%
...
00000150: 000a 043c b200 021b b600 03b1 0000 0001  ...<............
...
...
/*  3*/         boolean x = false;
...
b04a001@AsiaA1:~/comp2l% javac Ex3.java
b04a001@AsiaA1:~/comp2l%
...
00000150: 000a 033c b200 021b b600 03b1 0000 0001  ...<............
...
...
/*  3*/         int x = 1;
...
b04a001@AsiaA1:~/comp2l% javac Ex3.java
b04a001@AsiaA1:~/comp2l%
...
00000150: 000a 043c b200 021b b600 03b1 0000 0001  ...<............
...
...
/*  3*/         int x = 0;
...
b04a001@AsiaA1:~/comp2l% javac Ex3.java
b04a001@AsiaA1:~/comp2l%
...
00000150: 000a 033c b200 021b b600 03b1 0000 0001  ...<............
...

3.1.4 ビット列

ビット列bit sequence

表 3.11  Javaのビット列における真理値と演算子
真理値と演算子 一般的な記号 Javaプログラム
T 1
F 0
論理積 &
論理和 |
否定 ¬ ~
表 3.12  10進数、2進数、16進数の対応
10進数 2進数 16進数
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

例題3. ビット列の演算 10 & 3 の値を求めてください。 始めに手計算で値を求め、次にプログラムEx3.javaを変更してjavacコマンドとjavaコマンドを実行し、出力を確認します。

解答例3.

  0000 1010
& 0000 0011
-----------
  0000 0010

したがって、10 & 3 の値は 2 です。

...
/*  3*/         int x = 10 & 3;
...
b04a001@AsiaA1:~/comp2l% javac Ex3.java
b04a001@AsiaA1:~/comp2l% java Ex3
2
b04a001@AsiaA1:~/comp2l%

3.2 演習3

問1. 命題 ¬( PQ ) と (¬ P )∧(¬ Q ) が同値であることを、真理値表を作成して証明してください。

問2. 命題 ( PQ )∧ R と ( PR )∨( QR ) が同値であることを、真理値表を作成して証明してください。

問3. ビット列の演算 10 | 3 の値を求めてください。 始めに手計算で値を求め、次にプログラムEx3.javaを変更してjavacコマンドとjavaコマンドを実行し、出力を確認します。


3.3 レポート課題

今日の演習3の答案をkonishi@twcu.ac.jpあてにメールで送ってください。 メールには、学生番号、氏名、科目名、授業日(10月8日)を明記してください。


3.4 参考文献


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2004年10月8日更新
konishi@twcu.ac.jp
Copyright (C) 2004 Zenjiro Konishi. All rights reserved.