# 5.5: Interger Division and Modulus

- Page ID
- 29051

## Overview of Integer Division and Modulus

By the time we reach adulthood, we normally think of division as resulting in an answer that might have a fractional part (a floating-point data type). This type of division is known as **floating-point division**. However, division when both operands are of the integer data type acts differently on most computers and is called: ** integer division**. Within the C++ programming language the following expression does not give the answer of 2.75 or 2 ¾.

11/4

Because both operands are of the integer data type the evaluation of the expression (or answer) would be 2 with no fractional part (it gets thrown away). Again, this type of division is call ** integer division** and it is what you learned in grade school the first time you learned about division.

**Figure \(\PageIndex{1}\)** Integer division as learned in grade school.

In the real world of data manipulation there are some things that are always handled in whole units or numbers (integer data type). ** Fractions just don’t exist.** To illustrate our example: I have 11 dollar coins to distribute equally to my 4 children. How many do they each get? Answer is 2 with me still having 3 left over (or with 3 still remaining in my hand). The answer is not 2 ¾ each or 2.75 for each child. The dollar coins are not divisible into fractional pieces. Don’t try thinking out of the box and pretend you’re a pirate. Using an axe and chopping the 3 remaining coins into pieces of eight. Then, giving each child 2 coins and 6 pieces of eight or 2 6/8 or 2 ¾ or 2.75. If you do think this way, I will change my example to cans of tomato soup. I dare you to try and chop up three cans of soup and give each kid ¾ of a can. Better yet, living things like puppy dogs. After you divide them up with an axe, most children will not want the ¾ of a dog.

What is ** modulus**? It's the other part of the answer for integer division. It’s the remainder. Remember in grade school you would say, "Eleven divided by four is two remainder three." In C++ programming language the symbol for the modulus operator is the percent sign (%).

11 % 4

Thus, the answer or value of this expression is 3 or the remainder part of integer division.

Many compilers require that you have integer operands on both sides of the modulus operator or you will get a compiler error. In other words, it does not make sense to use the modulus operator with floating-point operands.

Don’t let the following items confuse you.

6 / 24 which is different from 6 % 24

How many times can you divide 24 into 6? Six divied by 24 is zero. This is different from: What is the remainder of 6 divided by 24? Six, the remainder part given by modulus.

Questions1. 14 / 4 2. 5 / 13 3. 7 / 2.0 4. 14 % 4 5. 5 % 13 6. 7 % 2.0Answers1. 3 2. 0 3. 3.5 because one of the operands is a floating-point value, it is not integer division 4. 2 5. 5 3. "error" because most compilers require both operands to be of the integer data type

Adapted from:

"Integer Division and Modulus" by Kenneth Leroy Busbee, (Download for free at http://cnx.org/contents/303800f3-07f...93e8948c5@22.2) is licensed under CC BY 4.0