diff --git a/cst337/img/fig0lec10.png b/cst337/img/fig0lec10.png new file mode 100644 index 0000000..e064e11 Binary files /dev/null and b/cst337/img/fig0lec10.png differ diff --git a/cst337/lec/lec10.md b/cst337/lec/lec10.md index 7fd6d5e..4fc3406 100644 --- a/cst337/lec/lec10.md +++ b/cst337/lec/lec10.md @@ -1,4 +1,32 @@ # lec10 -> whole section still needs to be transcribed over fom paper +## Half-adder + +This will be the building block for adding bit-strings together later on however, for now we are going to just add two singular bits. +To accomplish this we'll build a half adder. + +This means our logic circuit must adhere to the following logic table. +If both inputs are 0 then our result is 0 and we don't have to carry anything out. +If only one input A/B is 1 then our result will clearly be 1 and our carry will be 0. +Finally if both inputs are 0 then since we can't fit 2 in a single bit it means we have to carry-out a 1, and our result will be 0. + +With all of this in mind we have a table to guide how we will implement our logic circuit. +I __highly__ suggest that you try to build a logic circuit on your own first as most of the content is best learned through practice. + +| A | B | Carry-out | Result | +|---|---|---|---| +| 0 | 0 | 0 | 0 | +| 0 | 1 | 0 | 1 | +| 1 | 0 | 0 | 1 | +| 1 | 1 | 1 | 0 | + +![fig0](../img/fig0lec10.png) + +## Full Adder + +If we only want to add single-bit's then a half-adder works fine but if we want to add multiple bits say `1011 + 0010` then we need to consider that we will likely have to chain these together. +The full-adder has 1 main difference from the half-adder, it has 3 inputs, 2 main inputs and 1 input for the carry bit. +The carry bit will propagate along the operation now if we chain these together, _just like real addition_! + +![fig1](../img/fig1lec10.png)