The purpose of this blog post is to write a Python script that will interpret a Boolean expression and output its full Truth Table.

#### Boolean Expressions & Truth Tables

Before attempting this challenge, you should test your understanding of Boolean expressions, logic gates diagrams and truth tables by competing this online quiz:

Online QuizBoolean Expressions, Logic Gates Diagrams and Truth Tables

#### Python Bitwise Operators

To implement a Python script than can interpret a Boolean expression we will the following **bitwise operators**:

Bitwise Operator | Example | Meaning |

& | a & b | Bitwise AND |

| | a | b | Bitwise OR |

^ | a ^ b | Bitwise XOR |

~ | ~a | Bitwise NOT |

Note that in Python, the following two bitwise operators can also be used to perform a **bitwise left shift or right shift**:

Bitwise Operator | Example | Meaning |

<< | a << n | Bitwise left shift by n places |

>> | a >> n | Bitwise right shift by n places |

#### Python Code (Solution)

Here is the Python code for our Truth Table Generator function *truthTable()* which takes two parameters:

- A Boolean expression: e.g. A AND NOT (B OR C)
- The number of inputs: either 2, 3 or 4: A, B, C and D

#### Your Task

Write an additional function to perform a bitwise left shift or a bitwise right shift using the bitwise operators << and >>.

Check that performing a **left shift by n place(s)** is equivalent to **multiplying a number by 2 ^{n}**.

For instance 5 << 3 is the same as 5×2^{3} = 40.

Check that performing a **right shift by n place(s)** is equivalent to **dividing a number by 2 ^{n} (whole division)**.

For instance 40 >> 3 is the same as 40/2^{3} = 5.