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

Compute n modulo d without division(/) and modulo(%) operators, where d is a power of 2 number.

Let *i*th 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<stdio.h>` `// 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 moduo %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+` `" moduo "` `+ 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,` `"moduo"` `,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 + ` `" moduo "` `+ d +` ` ` `" is "` `+ getModulo(n, d));` ` ` ` ` `}` `}` `// This code is contributed by vt_m.` |

## PHP

`<?php` `// This function will return n % d.` `// d must be one of: 1, 2, 4, 8, 16, 32, …` `function` `getModulo(` `$n` `, ` `$d` `)` `{` `return` `( ` `$n` `& (` `$d` `- 1) );` `} ` `// Driver Code` `$n` `= 6;` `// d must be a power of 2` `$d` `= 4;` `echo` `$n` `,` `" moduo"` `,` `" "` `, ` `$d` `, ` `" is "` `,` ` ` `" "` `,getModulo(` `$n` `, ` `$d` `);` ` ` `// This code is contributed by vt_m.` `?>` |

## Javascript

`<script>` `// This function will return n % d.` `// d must be one of: 1, 2, 4, 8, 16, 32, …` `function` `getModulo(n,d)` `{` ` ` `return` `( n & (d - 1) );` `} ` ` ` `// Driver Code` ` ` `n = 6;` ` ` `d = 4;` ` ` `document.write(n +` `" moduo "` `+ d + ` `" is "` `+ getModulo(n, d));` ` ` `// This code is contributed by simranarora5sos` `</script>` |

https://www.youtube.com/watch?v=fSjW-wDghTs

**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.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.