# Design a mealy machine for 2’s complement

Mealy machine is a finite-state machine, its current state and the current inputs determines the output of this machine.

**2’s complement**** :**

It is the mathematical operation on binary numbers. It is used for computation as a method of signed number representation. Its complement with respect to 2^{N} defines the two’s complement an N-bit number.

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the **CS Theory Course** at a student-friendly price and become industry ready.

**Logic:-**

First calculate 1’s complement of binary number, convert 1 to 0 and 0 to 1 and then add 1 to it. For example, if binary number is 1011 then its 1’s complement is 0100 and its 2’s complement is 0101

**Design mealy machine :**

- Take initial state A.
- If there are n number of zeros at initial state, it will remain at initial state.
- Whenever first input 1 is found then it gives output 1 and go to state B.
- In state B, if input is zero, output will be 1.And if input is 1 then output will be 0.
- And then set state B as final state.

The approach goes as follows:

- Start from right to left.
- Ignore all 0’s.
- When 1 comes ignore it and then take 1’s complement of every digit.

**Figure –** Mealy machine of 2’s complement

**Example-1:**

- Lets take 001 and we know that its 2’s complement is (110+1 = 111).
- So scan from right to left.
- On state A ‘1’ came first to go to stage B and in output write 1.
- On state B replace ‘0’ with ‘1’ and vice-versa.
- So finally we got 111 as output.
- Be aware that the output is also printed in right to left order.

**Example-2:**

- Lets take 01 and we know that its 2’s complement is (10+1 = 11).
- So scan from right to left.
- On state A ‘1’ came first to go to stage B and in output write 1.
- On state B replace ‘0’ with ‘1’ and vice-versa.
- So finally we got 11 as output.
- Be aware that the output is also printed in right to left order.