# Boolean Logic

- 0 / 1 --- ++++++++++++
+ OPERATOR +--- 0 / 1
- 0 / 1 --- ++++++++++++

Boolean logic is collective name for the groups and operations done using operands that can only have the value of 0 (false) and 1 (true). The operators are gates. Gates are the closest we can get to electronics while still retaining the idea of programming, as they are designed similarly to real-life circuits and the statements they use are identical to those used in programming languages.

Boolean logic is possible thanks to transistors - switches which act as basic building blocks for digital electronic computers.

## Basic Gates

AND - the output is TRUE if both statements are TRUE
a | b |out|
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |

OR - the output is TRUE if either statement is TRUE
a | b |out|
===|===|===|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |

NOT - only takes one operand, the output is flipped (FALSE to TRUE, TRUE to FALSE)
a |out|
===|===|
0 | 1 |
1 | 0 |

Any boolean manipulation is possible with these three gates. Actually just two - even OR can be constructed from them, the following set of operators has the exact same output as OR:

+++++ +++++++++++
- a ---+NOT+---+ +
+++++ + + +++++
+ AND +---+NOT+--- OUT
+++++ + + +++++
- b ---+NOT+---+ +
+++++ +++++++++++

There. Electric circuit for AND and OR:

/ / /
---o o---o o-- ----o o----
| | | |
| | | / |
| | |---o o---|
---B-------L---- | |
| |
---B---L----

## NAND

NAND is the negation of AND. It is a functionally complete gate - any other gate can be implemented with it.

a | b |out|
===|===|===|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |

Implementation of NOT:

- a ---++++++++
+ NAND +--- OUT
- a ---++++++++

AND is simply a reverse of NAND, it can be applied by combining NAND and NOT.

- a ---++++++++ +++++++
+ NAND +---+ NOT +--- OUT
- b ---++++++++ +++++++

## Composite and Advanced Operators

Composite operators - take in more than two boolean inputs - ex. multiadder:

- a ---+++++++ +++++++
+ AND +------+ +
- b ---+++++++ + AND +--- OUT
+ +
- c ----------------+++++++

Binary,
Computers