Binary logical operations *(also known as boolean operations)*, * allow the manipulation and analysis of conditions* within digital systems.

In the context of logical operations, **we will treat bits as boolean values**. That is, in these operations we will consider that `0`

is false, and `1`

is true.

On the other hand, logical operations operate at the individual level of each bit of the binary number. We call this “bitwise” operations.

They are called logical operations because **they show parallels with “traditional logic”**, where there are operations such as AND, OR, and NOT, represented by symbols like ”∧”, ”∨”, and ”¬“.

## AND Operation (Logical AND)

The AND operation takes two bits as input and produces an output bit that is 1 * if and only if both input bits are 1*. The truth table for the AND operation is as follows:

A | B | A AND B |
---|---|---|

0 | 0 | 0 |

0 | 1 | 0 |

1 | 0 | 0 |

1 | 1 | 1 |

We call it the AND operation because the concept is similar to what we have with the concept of “and” in our minds.

A and B is true if both A and B are true.

To apply it to binary numbers, we perform the `bitwise`

operation *(that is, on each bit individually)*.

```
1010
AND
1100
_____
1000
```

Since only the bits that are true in both input numbers remain on in the result.

## OR Operation (Logical OR)

The OR operation takes two bits as input and produces an output bit that is 1 * if at least one of the input bits is 1*. The truth table for the OR operation is as follows:

A | B | A OR B |
---|---|---|

0 | 0 | 0 |

0 | 1 | 1 |

1 | 0 | 1 |

1 | 1 | 1 |

As we see, it corresponds to the concept of “or” that we have in our minds.

A or B is true if either A is true or B is true.

If we apply it to binary numbers, we again perform the “bitwise” operation. For example,

```
1010
OR
1100
_____
1110
```

## NOT Operation (Logical NOT)

The NOT operation takes a single bit as input and produces an output bit that is * the complement of the input bit*. That is, if the input bit is

`0`

, the output bit will be `1`

, and vice versa.The truth table for the NOT operation is as follows:

A | NOT A |
---|---|

0 | 1 |

1 | 0 |

Applied bitwise on binary numbers:

```
1010
_____
0101
```

For example, in the binary operation `NOT 1010`

, the result would be `0101`

, since all input bits are inverted in the result.

## Other logical operations

The previous operations are fundamental in a logical system. However, **there are others that we will occasionally encounter** *(although less frequently)*.

### NAND Operation (NOT AND)

The NAND operation is the negation of the AND operation. That is, it returns false if both operands are true, and true in all other cases.

A | B | A NAND B |
---|---|---|

0 | 0 | 1 |

0 | 1 | 1 |

1 | 0 | 1 |

1 | 1 | 0 |

It corresponds to:

### NOR Operation (NOT OR)

The NOR operation is the negation of the OR operation. It returns true if both operands are false, and false in all other cases.

A | B | A NOR B |
---|---|---|

0 | 0 | 1 |

0 | 1 | 0 |

1 | 0 | 0 |

1 | 1 | 0 |

It corresponds to:

### XOR Operation (Exclusive OR)

The XOR operation, also known as “exclusive or,” returns true if exactly one of the operands is true, and false if both are equal.

A | B | A XOR B |
---|---|---|

0 | 0 | 0 |

0 | 1 | 1 |

1 | 0 | 1 |

1 | 1 | 0 |

It corresponds to:

### XNOR Operation (NOT Exclusive OR)

The XNOR operation is the negation of XOR. It returns true if both operands are equal, and false if they are different.

A | B | A XNOR B |
---|---|---|

0 | 0 | 1 |

0 | 1 | 0 |

1 | 0 | 0 |

1 | 1 | 1 |

It corresponds to: