diff --git a/docs/1b/ece124.md b/docs/1b/ece124.md index 4bcfdbe..dd295fe 100644 --- a/docs/1b/ece124.md +++ b/docs/1b/ece124.md @@ -4,6 +4,44 @@ Please see [ECE 150: C++#Non-decimal numbers](/1a/ece150/#non-decimal numbers) for more information. -## Logic gates +## Binary logic -!!! definition +A **binary logic variable** is a variable that has exactly two states: + +- 0, or false (switch open) +- 1, or true (switch closed) + +**Binary logic functions** are any function that satisfies the following type signature: + +```python +BoolFunc = Callable[[bool | BoolFunc, ...], bool] +``` + +In other words: + + - it must accept a number of booleans and/or other logic functions, and + - it must return exactly one boolean. + +These can be expressed via truth table inputs/outputs, algebraically, or via a logical circuit schematic. + +### Logical operators + +Operator precedence is () > NOT > AND > OR. + +The **AND** operator returns true if and only if **all** arguments are true. + +$$A\cdot B \text{ or }AB$$ + +(Source: Wikimedia Commons) + +The **OR** operator returns true if and only if **at least one** argument is true. + +$$A+B$$ + +(Source: Wikimedia Commons) + +The **NOT** operator returns the opposite of its singular input. + +$$\overline A \text{ or } A'$$ + +(Source: Wikimedia Commons)