**[**Back to FAQ SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**

`#DATA $NAME "An Introduction `**to **Boolean Arithmetic" / $AUTHOR "Light Ray" / $VERSION 001 / $DATE 950709 / $**TYPE ***{ TEXT ASCII
CRLF } *#DATA
********************************************************
* *
* An Introduction **To ***
* *
* Boolean Arithmetic *
* aka Binary Math *
* *
* by *
* *
* Light Ray *
* *
********************************************************
NOTE: This refers **to **"binary arithmetic" **as in **arithmetic involving
the manipulation **of **binary bits, **not **necessarily arithmetic involving
two operands.
PREREQUISITE: NumberBases.* / NUMBASES.*
The following operations will be summarized **in **this
document: **NOT**, **AND**, NAND, **OR**, NOR, **and XOR**.
*//===================\\
*|| SIMPLE OPERATIONS ||
\\===================*//
*The **NOT**, **AND**, **OR**, **and XOR **operations are "atomic." That **is**, these are
the simplest operations **and **any other operation can be "built" using
them.
+-------------------+
| The **NOT **Operation |
+-------------------+
**NOT is **sometimes known **as **the "Inverse" operation.
**NOT **simply reverses the state **of **all bits. A one becomes a zero **and
**a zero becomes a one.
The expression "**NOT **A" **is **written **as **"A" **with **an overscore. (an overscore
**is **a horizontal line above the letter).
+--------------+--------------+
| Input (A) | Output (B) | _
+--------------+--------------+ B = A
| 0 | 1 |
| 1 | 0 |
+--------------+--------------+
The converse **of **a **not **operator **is **true. **If **A = **NOT **B, **then **B = **NOT **A.
+-------------------+
| The **AND **Operation |
+-------------------+
The **and **operation **is **a binary operator. It takes two parameters, usually
**in **the form "a **AND **b".
**AND **results **in **1 only when both operands are 1, otherwise it results **in
**zero.
**AND is **sometimes written **as **a dot **or **multiplication sign.
Here **is **the truth table **for **C = A **AND **B
+--------------+--------------+--------------+
| Input (A) | Input (B) | Output (C) |
+--------------+--------------+--------------+
| 0 | 0 | 0 | C = A **AND **B
| 1 | 0 | 0 | C = A * B
| 0 | 1 | 0 |
| 1 | 1 | 1 |
+--------------+--------------+--------------+
+-------------------+
| The **OR **Operation |
+-------------------+
The **OR **operation **is **a binary operator. It takes two parameters, usually
**in **the form "a **OR **b".
**OR **results **in **1 when at least one input **is **1. This can be rephased **to
**say that the output **is **0 only when both inputs are zero, otherwise it
**is **one.
**OR is **alternatively written **as **a plus sign.
Here **is **the truth table **for **C = A **OR **B
+--------------+--------------+--------------+
| Input (A) | Input (B) | Output (C) |
+--------------+--------------+--------------+
| 0 | 0 | 0 | C = A **OR **B
| 1 | 0 | 1 | C = A + B
| 0 | 1 | 1 |
| 1 | 1 | 1 |
+--------------+--------------+--------------+
+-------------------+
| The **XOR **Operation |
+-------------------+
**XOR is **a binary operation **and is **a derrivative **of **the **OR **operator.
**XOR **stands **for **"EXCLUSIVE **OR**", meaning that it results **in **ONE **if and
**only **if **either operand **is **one, but results **in **zero **of **neither **or **both
operands are one.
**XOR is **alternatively written **as **a plus enclosed by a circle, written
**in **ASCII **as **a plus **in **parenthesis.
+--------------+--------------+--------------+
| Input (A) | Input (B) | Output (C) |
+--------------+--------------+--------------+
| 0 | 0 | 0 | C = A **XOR **B
| 1 | 0 | 1 | C = A (+) B
| 0 | 1 | 1 |
| 1 | 1 | 0 |
+--------------+--------------+--------------+
*//===================\\
*|| COMLEX OPERATIONS ||
\\===================*//
*These operations may be built using the other operations.
+--------------------+
| The NOR Operation |
+--------------------+
A NOR B **is **one only when (A==0) **and **(B==0).
[ "==" **is **read "**is**". (A==B) **is **true (1) when A equals B, otherwise
it **is **false (0). ]
**if **C = A NOR B
**then **C = **NOT **(A **OR **B)
C = **NOT **(A **OR **B) **is **alternatively written **as **A+B **with **an overscore:
_______
C = (A + B)
+--------------+--------------+--------------+
| Input (A) | Input (B) | Output (C) |
+--------------+--------------+--------------+
| 0 | 0 | 1 | C = **NOT **(A + B)
| 1 | 0 | 0 | _______
| 0 | 1 | 0 | C = (A + B)
| 1 | 1 | 0 |
+--------------+--------------+--------------+ C = (A==0) **AND **(B==0)
+---------------------+
| The NAND Operation |
+---------------------+
**if **C = A NAND B
**then **C = **NOT **(A **AND **B)
+--------------+--------------+--------------+
| Input (A) | Input (B) | Output (C) |
+--------------+--------------+--------------+
| 0 | 0 | 1 | C = **NOT **(A * B)
| 1 | 0 | 1 | _______
| 0 | 1 | 1 | C = (A * B)
| 1 | 1 | 0 |
+--------------+--------------+--------------+ C = **NOT **((A==1) **AND **(B==1))
---------------------------------
**END
**---------------------------------
This was typed **and **editted by Light Ray at the Digital Forest BBS,
which may be reached at +1 (714) 586-6142. It **is **located **in
**Mission Viejo, California, United States **of **America. This document
**is **based **on **Explorer Post 340 "lab notes" by "rlh" dated 5/10/95.
Please send any comments, suggestions, compaints, **or **addittions **to
**me at dr261@cleveland.freenet.edu, even **if **all you say **is **"I read
your **file**." I may also be reached at 1:103/925, 66:714/10, **or
**50:100/505.
Light Ray
Written by Tobin Fricke sometime **in **1995. Feel free **to **contact me.
My email addresses are: tobin@mail.edm.net, fricke@roboben.engr.ucdavis.edu,
**and **dr261@cleveland.freenet.edu. You should be able **to **contact me via one
**of **those.

**[**Back to FAQ SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**