02 - Boolean algebra

Preview:

DESCRIPTION

I used this set of slides for the lecture on Computational Thinking I gave at the University of Zurich for the 1st year students following the course of Formale Grundlagen der Informatik.

Citation preview

Booleanalgebra

www.tudorgirba.com

computerinformation information

computation

Alan Turing, 1937

George Boole1815 – 1864

George Boole1815 – 1864

Claude Shannon1916 – 2001

+

+

a = 0

+

y = 0

a = 0

++

y = 0

a = 0

+

a = 1

+

y = 0

a = 0

+

y = 1

a = 1

+

y = 0

a = 0

+

b = 0

a = 0

+

b = 0

a = 0

y = 0

∧ ba = y00 0

+

b = 1

a = 0∧ ba = y

00 0

+

b = 1

a = 0

y = 0

∧ ba = y00 010 0

+

b = 0

a = 1∧ ba = y

00 010 0

+

b = 0

a = 1

y = 0

∧ ba = y00 010 001 0

+

b = 1

a = 1∧ ba = y

00 010 001 0

+

b = 1

a = 1

y = 1

∧ ba = y00 010 001 011 1

+

b = x

a = 0∧ ba = y

00 010 001 011 1

+

b = x

a = 0

y = 0

∧ ba = y00 010 001 011 1x0 0

+

b = x

a = 1∧ ba = y

00 010 001 011 1x0 0

+

b = x

a = 1

y = x

∧ ba = y00 010 001 011 1x0 0x1 x

+

b = x

a = x∧ ba = y

00 010 001 011 1x0 0x1 x

+

b = x

a = x

y = x

∧ ba = y00 010 001 011 1x0 0x1 xxx x

+

a = 0 b = 0

+

a = 0 b = 0

y = 0

∨ ba = y00 0

+

a = 0 b = 1

∨ ba = y00 0

+

a = 0 b = 1

y = 1

∨ ba = y00 010 1

+

a = 1 b = 0

∨ ba = y00 010 1

+

a = 1 b = 0

y = 1

∨ ba = y00 010 101 1

+

a = 1 b = 1

∨ ba = y00 010 101 1

+

a = 1 b = 1

y = 1

∨ ba = y00 010 101 111 1

+

a = 0 b = x

∨ ba = y00 010 101 111 1

+

a = 0 b = x

y = x

∨ ba = y00 010 101 111 1x0 x

+

a = 1 b = x

∨ ba = y00 010 101 111 1x0 x

+

a = 1 b = x

y = 1

∨ ba = y00 010 101 111 1x0 xx1 1

+

a = x b = x

∨ ba = y00 010 101 111 1x0 xx1 1

+

a = x b = x

y = x

∨ ba = y00 010 101 111 1x0 xx1 1xx x

+

∨ ba = y00 010 101 111 1

∧ ba = y00 010 001 011 1

Conjunction (AND) Disjunction (OR)

∨ ba = y00 010 101 111 1

∧ ba = y00 010 001 011 1

?

Conjunction (AND) Disjunction (OR)

a = 0

a = 0

y = 1

a =¬ y0 1

a = 1

a =¬ y0 1

a = 1

y = 0

a =¬ y0 11 0

∨ ba = y00 010 101 111 1

∧ ba = y00 010 001 011 1

a =¬ y0 11 0

Conjunction (AND) Disjunction (OR) Negation (NOT)

¬ a

a ∧ b

a ∨ b

- a

a * b

a + b

¬ a

a ∧ b

a ∨ b

- a

a * b

a + b

¬ a

a ∧ b

a ∨ b

! a

a & b

a | b

- a

a * b

a + b

¬ a

a ∧ b

a ∨ b

! a

a & b

a | b

NOT

OR

AND

- a

a * b

a + b

¬ a

a ∧ b

a ∨ b

! a

a & b

a | b

NOT

OR

AND

a ∧ 1 = aa ∨ 0 = a

Neutral elements

a ∧ 1 = aa ∨ 0 = a

Neutral elements

a ∧ 0 = 0a ∨ 1 = 1

Zero elements

a ∧ 1 = aa ∨ 0 = a

Neutral elements

a ∧ 0 = 0a ∨ 1 = 1

Zero elements

a ∧ a = aa ∨ a = a

Idempotence

a ∧ 1 = aa ∨ 0 = a

Neutral elements

a ∧ 0 = 0a ∨ 1 = 1

Zero elements

a ∧ a = aa ∨ a = a

Idempotence

a ∧ ¬ a = 0a ∨ ¬ a = 1

Negation

a ∧ 1 = aa ∨ 0 = a

Neutral elements

a ∧ 0 = 0a ∨ 1 = 1

Zero elements

a ∧ a = aa ∨ a = a

Idempotence

a ∧ ¬ a = 0a ∨ ¬ a = 1

Negation

a ∨ b = b ∨ aa ∧ b = b ∧ a

Commutativity

a ∧ 1 = aa ∨ 0 = a

Neutral elements

a ∧ 0 = 0a ∨ 1 = 1

Zero elements

a ∧ a = aa ∨ a = a

Idempotence

a ∧ ¬ a = 0a ∨ ¬ a = 1

Negation

a ∨ b = b ∨ aa ∧ b = b ∧ a

Commutativity

a ∧ (b ∧ c) = (a ∧ b) ∧ ca ∨ (b ∨ c) = (a ∨ b) ∨ c

Associativity

a ∧ 1 = aa ∨ 0 = a

Neutral elements

a ∧ 0 = 0a ∨ 1 = 1

Zero elements

a ∧ a = aa ∨ a = a

Idempotence

a ∧ ¬ a = 0a ∨ ¬ a = 1

Negation

a ∨ b = b ∨ aa ∧ b = b ∧ a

Commutativity

a ∧ (b ∧ c) = (a ∧ b) ∧ ca ∨ (b ∨ c) = (a ∨ b) ∨ c

Associativity

a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c)a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c)

Distributivity

De Morgan (1806 – 1871)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

DeMorgan’s laws

NAND

NOR

De Morgan (1806 – 1871)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

a b a ∨ b ¬ (a ∨ b) ¬ a ¬ b (¬ a) ∧ (¬ b)0011

0101

0111

1000

1100

1010

1000

DeMorgan’s laws

NAND

NOR

De Morgan (1806 – 1871)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

a b a ∨ b ¬ (a ∨ b) ¬ a ¬ b (¬ a) ∧ (¬ b)0011

0101

0111

1000

1100

1010

1000

DeMorgan’s laws

NAND

NOR

De Morgan (1806 – 1871)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

a b a ∨ b ¬ (a ∨ b) ¬ a ¬ b (¬ a) ∧ (¬ b)0011

0101

0111

1000

1100

1010

1000

DeMorgan’s laws

NAND

NOR

De Morgan (1806 – 1871)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

a b a ∨ b ¬ (a ∨ b) ¬ a ¬ b (¬ a) ∧ (¬ b)0011

0101

0111

1000

1100

1010

1000

DeMorgan’s laws

NAND

NOR

De Morgan (1806 – 1871)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

a b a ∨ b ¬ (a ∨ b) ¬ a ¬ b (¬ a) ∧ (¬ b)0011

0101

0111

1000

1100

1010

1000

DeMorgan’s laws

NAND

NOR

De Morgan (1806 – 1871)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

a b a ∨ b ¬ (a ∨ b) ¬ a ¬ b (¬ a) ∧ (¬ b)0011

0101

0111

1000

1100

1010

1000

DeMorgan’s laws

NAND

NOR

De Morgan (1806 – 1871)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

a b a ∨ b ¬ (a ∨ b) ¬ a ¬ b (¬ a) ∧ (¬ b)0011

0101

0111

1000

1100

1010

1000

DeMorgan’s laws

NAND

NOR

a ∧ 1 = a a ∨ b = b ∨ aa ∨ 0 = a

a ∧ 0 = 0a ∨ 1 = 1

a ∧ a = aa ∨ a = a

a ∧ ¬ a = 0a ∨ ¬ a = 1

Neutral elements

Zero elements

Idempotence

Negation

a ∧ (b ∧ c) = (a ∧ b) ∧ c

a ∧ b = b ∧ a

a ∨ (b ∨ c) = (a ∨ b) ∨ c

a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c)a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c)

¬ (a ∧ b) = (¬ a) ∨ (¬ b)¬ (a ∨ b) = (¬ a) ∧ (¬ b)

Commutativity

Associativity

Distributivity

DeMorgan’s

≠ ba = y00 010 101 111 0

Exclusive OR (XOR)

≠ ba = y00 010 101 111 0

Exclusive OR (XOR)

⇒ ba = y00 110 101 011 1

Implication

≠ ba = y00 010 101 111 0

Exclusive OR (XOR)

⇒ ba = y00 110 101 011 1

⇔ ba = y00 110 001 011 1

Implication Equivalence

≠ ba = y00 010 101 111 0

Exclusive OR (XOR)

⇒ ba = y00 110 101 011 1

⇔ ba = y00 110 001 011 1

Implication Equivalence

∨ ba = y00 010 101 111 1

∧ ba = y00 010 001 011 1

Conjunction (AND) Disjunction (OR)

a =¬ y0 11 0

Negation (NOT)

≠ ba = y00 010 101 111 0

Exclusive OR (XOR)

⇒ ba = y00 110 101 011 1

⇔ ba = y00 110 001 011 1

Implication Equivalence

∨ ba = y00 010 101 111 1

∧ ba = y00 010 001 011 1

Conjunction (AND) Disjunction (OR)

a =¬ y0 11 0

Negation (NOT)4 3 3

3 2 1

Tautology

f = 1 (a ∧ (a ⇒ b)) ⇒ b

Contradiction

f = 0 a ∧ (¬ a)

Satisfiable

f = 1 sometimes a ⇒ b

How many basic boolean functionswith 2 parameters are possible?

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

0000 y0 = 00001 y1 = a ∧ b0010 y2 = a ∧ ¬ b0011 y3 = a0100 y4 = ¬ a ∧ b0101 y5 = b0110 y6 = a ≠ b0111 y7 = a ∨ b

How many basic boolean functionswith 2 parameters are possible?

00110101

ab

1111 y15 = 11110 y14 = ¬ a ∨ ¬ b1101 y13 = ¬ a ∨ b1100 y12 = ¬ a1011 y11 = a ∨ ¬ b1010 y10 = ¬ b1001 y9 = a ⇔ b1000 y8 = ¬ a ∧ ¬ b

How to create a half adder?

How to create a half adder?

+ ba = co00 010 001 011 1

q0110

How to create a half adder?

ab

q

co

+ ba = co00 010 001 011 1

q0110

AND

XOR

How to create a full adder?

How to create a full adder?

+ ba = co00 010 001 011 1

q0110

ci +00001111

0011

0101

0111

1001

How to create a full adder?

+ ba = co00 010 001 011 1

q0110

ci +00001111

0011

0101

0111

1001

Fulladder

a b

coci

q

How to create a full adder?

Fulladder

a b

coci

q

How to create a full adder?

Fulladder

a b

coci

q

Fulladder

a b

coci

q

Fulladder

a b

coci

q

Recommended