# Compute modulus division by a power-of-2-number

• Difficulty Level : Medium
• Last Updated : 14 Mar, 2022

Compute n modulo d without division(/) and modulo(%) operators, where d is a power of 2 number.
Let ith bit from right is set in d. For getting n modulus d, we just need to return 0 to i-1 (from right) bits of n as they are and other bits as 0.
For example if n = 6 (00..110) and d = 4(00..100). Last set bit in d is at position 3 (from right side). So we need to return last two bits of n as they are and other bits as 0, i.e., 00..010.
Now doing it is so easy, guess it….
Yes, you have guessing it right. See the below program.

## C++

 `#include` `using` `namespace` `std;` `// This function will return n % d.` `// d must be one of: 1, 2, 4, 8, 16, 32, … ` `unsigned ``int` `getModulo(unsigned ``int` `n, ` `                       ``unsigned ``int` `d)` `{` `  ``return` `( n & (d - 1) );` `}         `   `// Driver Code` `int` `main()` `{` `  ``unsigned ``int` `n = 6;`   `  ``// d must be a power of 2` `  ``unsigned ``int` `d = 4; ` `  ``cout<< n <<``" modulo "``<

## C

 `#include`   `// This function will return n % d.` `// d must be one of: 1, 2, 4, 8, 16, 32, … ` `unsigned ``int` `getModulo(unsigned ``int` `n, ` `                       ``unsigned ``int` `d)` `{` `return` `( n & (d - 1) );` `}         `   `// Driver Code` `int` `main()` `{` `unsigned ``int` `n = 6;`   `// d must be a power of 2` `unsigned ``int` `d = 4; ` `printf``(``"%u modulo %u is %u"``, n, d, getModulo(n, d));`   `getchar``();` `return` `0;` `}     `

## Java

 `// Java code for Compute modulus division by ` `// a power-of-2-number` `class` `GFG {` `    `  `    ``// This function will return n % d.` `    ``// d must be one of: 1, 2, 4, 8, 16, 32,` `    ``static` `int` `getModulo(``int` `n, ``int` `d)` `    ``{` `        ``return` `( n & (d-``1``) );` `    ``}     ` `    `  `    ``// Driver Code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `n = ``6``;` `        `  `        ``/*d must be a power of 2*/` `        ``int` `d = ``4``; ` `        `  `        ``System.out.println(n+``" modulo "` `+ d + ` `                    ``" is "` `+ getModulo(n, d));` `    ``}` `} `   `// This code is contributed ` `// by Smitha Dinesh Semwal.`

## Python3

 `# Python code to demonstrate` `# modulus division by power of 2`     `# This function will` `# return n % d.` `# d must be one of:` `# 1, 2, 4, 8, 16, 32, … ` `def` `getModulo(n, d):`   `    ``return` `( n & (d``-``1``) )` `         `  `# Driver program to` `# test above function ` `n ``=` `6`   `#d must be a power of 2` `d ``=` `4` `print``(n,``"modulo"``,d,``"is"``,` `      ``getModulo(n, d))`   `# This code is contributed by ` `# Smitha Dinesh Semwal`

## C#

 `// C# code for Compute modulus` `// division by a power-of-2-number` `using` `System;`   `class` `GFG {` `    `  `// This function will return n % d.` `// d must be one of: 1, 2, 4, 8, 16, 32, … ` `static` `uint` `getModulo( ``uint` `n, ``uint` `d)` `{` `return` `( n & (d-1) );` `}     `   `// Driver code` `static` `public` `void` `Main () ` `   ``{` `    ``uint` `n = 6;` `    ``uint` `d = 4; ``/*d must be a power of 2*/`   `    ``Console.WriteLine( n + ``" modulo "` `+ d + ` `                ``" is "` `+ getModulo(n, d));` `    `  `    ``}` `}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output

`6 modulo 4 is 2`

Time Complexity: O(1)

Auxiliary Space: O(1)

References:
http://graphics.stanford.edu/~seander/bithacks.html#ModulusDivisionEasy
Please write comments if you find any bug in the above program/algorithm or other ways to solve the same problem.

My Personal Notes arrow_drop_up
Recommended Articles
Page :