# Visual C# Guide

Logical Bitwise Operators

Bitwise operators are used when we want to manipulate the individual bits in a bit pattern. You need to understand binary to follow this. There are 4 main operations,

- NOT
- AND
- OR
- XOR

The effect of these operations is shown in the truth tables below.

## The NOT Gate

Takes only one input and returns the opposite. Sometimes this gate is referred to as an inverter.

Input A | Output |

0 | 1 |

1 | 0 |

## The AND Gate

Takes two inputs, the output is true if both inputs are true.

Input A | Input B | Output |

0 | 0 | 0 |

0 | 1 | 0 |

1 | 0 | 0 |

1 | 1 | 1 |

## The OR Gate

Takes two inputs, the output is true if either of the inputs is true.

Input A | Input B | Output |

0 | 0 | 0 |

0 | 1 | 1 |

1 | 0 | 1 |

1 | 1 | 1 |

## The XOR/EOR Gate

The exclusive or gate takes two inputs. The output is true if one input is true but not both.

Input A | Input B | Output |

0 | 0 | 0 |

0 | 1 | 1 |

1 | 0 | 1 |

1 | 1 | 0 |

## Getting All Logical In C# - NOT

The following program performs a NOT operation on the variable a.

`int a = 13;`

int b = ~a;

Console.WriteLine(b);

Console.ReadLine();

The output you get from this program is -14. Let's see if that's what we should be expecting. We started with a value for a of 13. In binary this is,

**00001101**

If we invert each of these bits, we get the following,

**11110010**

In denary, this value is **-128 + 64 + 32 + 16 + 2 = -14**.

## Getting All Logical In C# - AND

The following program performs an AND operation with the variables a and b.

`int a = 13;`

int b = 17;

int c = a & b;

Console.WriteLine(c);

Console.ReadLine();

The output you get from this program is 1. Is that right? The values for a and b are 13 and 17 respectively. In binary this is,

**00001101**

**00010001**

The AND opertion returns a bit only where the bits from both numbers are set to 1. The only bit this happens for is for the unit bit. The answer is therefore 1.

## Getting All Logical In C# - OR

The following program performs an OR operation with the variables a and b.

`int a = 13;`

int b = 17;

int c = a | b;

Console.WriteLine(c);

Console.ReadLine();

The output from this program is 29. Is that what we expect? The values for a and b are 13 and 17 respectively. In binary this is,

**00001101**

**00010001**

The OR operation returns a bit if either or both of the bits are set to 1. In this case, this gives the new binary number,

**00011101**

This is equal to **16 + 8 + 4 + 1 = 29**

## Getting All Logical In C# - XOR

The following program performs an XOR operation with the variables a and b.

`int a = 13;`

int b = 17;

int c = a ^ b;

Console.WriteLine(c);

Console.ReadLine();

The output from this program is 29. Is that what we expect? The values for a and b are 13 and 17 respectively. In binary this is,

**00001101**

**00010001**

The XOR operation returns a bit if either but not both of the bits are set to 1. In this case, this gives the new binary number,

**00011100**

This is equal to **16 + 8 + 4 = 28**

## Having A Go

- Write a program that allows you to input 2 integers at the keyboard. The program should report the result of the AND, OR and XOR operations on these numbers as well as the NOT operation on each of the two numbers.
- Use your program to give you the answers to the following
- 36 AND 49
- 47 XOR 36
- 82 OR 15