A NAND gate is a logic gate. The output is false if all inputs are true.
.-----------------------.
| NAND GATE |
|-----------------------|
| INPUT | OUTPUT |
|-----------+-----------|
| A | B | A NAND B |
|-----+-----+-----------|
| | | |
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
'-----------------------'
A NAND gate has functional completeness. This means that all logical gates can be implemented with a
-> NandGate .
The NorGate also has functinal completeness.
In awk the functions for the logic gates NOT, AND, OR, NOR, XOR, XNOR could be defined with the NAND gate function as follows:
function _nand_(a, b, value) {
if ( !a && !b )
value = 1;
else if ( !a && b )
value = 1;
else if ( a && !b )
value = 1;
else if ( a && b )
value = 0;
return value;
}
function _not_(a, value) {
value = _nand_(
a,
a
);
return value;
}
function _and_(a, b, value) {
value = _nand_(
_nand_(
a,
b
),
_nand_(
a,
b
)
);
return value;
}
function _or_(a, b, value) {
value = _nand_(
_nand_(
a,
a
),
_nand_(
b,
b
)
);
return value
}
function _nor_(a, b, value) {
value = _nand_(
_nand_(
_nand_(
a,
a
),
_nand_( b,
b
)
),
_nand_(
_nand_(
a,
a
),
_nand_(
b,
b
)
)
);
return value;
}
function _xor_(a, b, value) {
value = _nand_(
_nand_(
a,
_nand_(
a,
b
)
),
_nand_(
a,
_nand_(
a,
b
)
)
);
return value;
}
function _xnor_(a, b, value) {
value = _nand_(
_nand_(
_nand_(
a,
b
),
_nand_(
b,
b
)
),
_nand_(
a,
b
)
);
return value
}