# Turing machine for 1’s and 2’s complement

Prerequisite – Turing Machine, 1’s and 2’s complement of a Binary Number

### Problem-1:

Draw a Turing machine to find 1’s complement of a binary number.

1’s complement of a binary number is another binary number obtained by toggling all bits in it, i.e., transforming the 0 bit to 1 and the 1 bit to 0.

Example:

Approach:

1. Scanning input string from left to right
2. Converting 1’s into 0’s
3. Converting 0’s into 1’s
4. Move the head to the start when BLANK is reached.

Steps:

• Step-1. Convert all 0’s into 1’s and all 1’s into 0’s and go right if B is found go to left.
• Step-2. Then ignore 0’s and 1’s and go left & if B found go to right
• Step-3. Stop the machine.

Here, q0 shows the initial state and q1 shows the transition state and q2 shows the final state.
And 0, 1 are the variables used and R, L shows right and left.

Explanation:

• State q0 replace ‘1’ with ‘0’ and ‘0’ with ‘1’ and move to right.
• When BLANK is reached move towards left.
• Using state ‘q2’ we reach start of the string.
• When BLANK is reached move towards right and reaches the final state q2.

#### Problem-2:

Draw a Turing machine to find 2’s complement of a binary number.
2’s complement of a binary number is 1 added to the 1’s complement of the binary number.

Example:

2’s complement

Approach:

1. Scanning input string from right to left
2. Pass all consecutive ‘0’s
3. For first ‘1’ comes, do nothing
4. After that, Converting 1’s into 0’s and Converting 0’s into 1’s
5. Stop when BLANK is reached.

Steps:

• Step-1. First ignore all 0’s and 1’s and go to right & then if B found go to left.
• Step-2. Then ignore all 0’s and go left, if 1 found go to left.
• Step-3. Convert all 0’s into 1’s and all 1’s into 0’s and go to left & if B found go to right and stop the machine.

2’s complement

Here, q0 shows the initial state and q1 and q2 shows the transition state and q3 shows the final state.
And 0, 1 are the variables used and R, L shows right and left.

Explanation:

• Using state ‘q0’ we reach end of the string.
• When BLANK is reached move towards left.
• Using state ‘q1’ we passes all 0’s and move left first 1 is found.
• Pass single ‘1’ and move left.
• Using state ‘q2’ we complement the each digit and move left.
• When BLANK is reached move towards right and reaches the final state q2.