Skip to content
Related Articles

Related Articles

Improve Article

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

  • Difficulty Level : Medium
  • Last Updated : 28 Apr, 2021

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




My Personal Notes arrow_drop_up
Recommended Articles
Page :