# Modulo 2 Arithmetic

## Introduction

These notes describe how to go about modulo 2 addition, subtraction and division.

## Modulo 2 Arithmetic

Modulo 2 arithmetic is performed digit by digit on binary numbers. Each digit is considered independently from its neighbours. Numbers are not carried or borrowed.

## Addition

Modulo 2 addition is performed using an exclusive OR (xor) operation on the corresponding binary digits of each operand. The following table describes the xor operation:

A B A xor B 0 0 0 0 1 1 1 0 1 1 1 0

We can add two binary numbers, X and Y as follows:

(X) 10110100
(Y) 00101010 +
--------
(Z) **10011110**

## Subtraction

Modulo 2 subtraction provides the same results as addition. This can be illustrated by adding the numbers X and Z from the addition example.

(X) 10110100
(Z) 10011110 -
--------
(Y) **00101010**

The addition example shows us that X + Y = Z so Y = Z - X.

However, the subtraction example shows us that Y = Z + X.

As neither Z nor X is zero, the addition and subtraction operators must behave in the same way.

## Division

Modulo 2 division can be performed in a manner similar to arithmetic long division. Subtract the denominator (the bottom number) from the leading parts of the enumerator (the top number). Proceed along the enumerator until its end is reached. Remember that we are using modulo 2 subtraction. For example, we can divide 100100111 by 10011 as follows:

**10001** remainder 100
----------
10011|100100111
10011
10111
10011
100

This has the effect that X/Y = Y/X. For example:

**1** remainder 1011
------
11001|10010
11001
1011
**1** remainder 1011
------
10010|11001
10010
1011

## References:

- A.S. Tanenbaum (1996).
*Computer Networks*. Prentice Hall ISBN 0-13-394248-1. See section 3.2.2.

## See Also:

## Comments

**Shim** on January 23, 2015:

How about modulo 2 multiplication?

**Debrah** on January 01, 2015:

Your answer was just what I neeedd. It's made my day!

**Raj** on February 12, 2014:

Thanks explained very well

**Alphonce** on May 16, 2013:

Thanks,

**Goht** on January 17, 2013:

Thanks! =D

**Stewart Smith (author)** from UK on October 25, 2012:

Ogi,

Your example performs a Binary Addition. The example I give is of Modulo 2 Addition. As the article says, Modulo 2 Addition performs the XOR operation on each column, no carry is performed.

I hope this helps.

**Ogi** on October 25, 2012:

Addition is wrong!

(X) 10110100

(Y) 00101010 +

(Z) 10011110 -wrong

(Z) 11011110 -correct

**gul khan** on February 29, 2012:

thanks mate. appreciated:))

**arfname** on January 10, 2012:

Thank you =)

**hassan** on December 12, 2011:

thanx

**Jesinth** on March 28, 2011:

Thank You Booster911. Very Useful

**vick** on July 07, 2010:

nice work, unrelated question though

what is an inverse randomizer in cryptography

**felixdolot3** on June 26, 2010:

this is very helpful