 a > b, THEN." Here, the ALU is asked to verify indeed if a > b, SO that in the event the answer is yes (or TRUE, or 1 in logic language) the high-level program may jump to another instruction. The ALU must then subtract b from a, and return TRUE, or 1, if Z = a - b is identified as being neither negative nor zero. It is clear that such a test requires a microprogram, which sequentially compares every bit in the two registers A, B. The same is true for operations such as multiplication and division, for which the ALU must also return the extra information "overflow = TRUE/FALSE" and "zero divide = TRUE/FALSE." Here, we will not tarry on the micromachine programming concept and structure, but rather focus on the bit-to-bit operations (a bj) in the registers A, B, which are per- formed by a preset circuitry of logic gates, acting as a controlled network. As mentioned earlier, a basic example of such a network is provided later in this chapter (Fig. 15.6). But to understand how the network operates under any micro-instructions, it is essen- tial to review the different types of logic gate, as well as their possible basic circuit arrangements. The three most elementary logic gates, which may have one or two input bits, but have a single output bit, are called NOT, AND, and OR, as illustrated in Fig. 15.3. Calling a, b the bit operands, these gates correspond to the three Boolean operators noted, respectively and equivalently (see Chapter 1): a for NOT a, avb,a+b for a OR b, a\b,axb for a AND b. The "truth tables" shown in the figure list all possible outcomes of any logical operation. For instance, the output = a \ b (AND gate) is nonzero only in the case a = = 1. The three other cases, (a, b) = (00), (10), (01) yield C = 0. Thus, the result C = 1 has only one cause while the result C = 0 has three indistinguishable causes, illustrating that the AND operation is effectively nonreversible. It is observed from the truth tables in Fig. 15.3 that only the NOT gate performs a reversible computation (the output to input bi