# 算法题：如何计算模数除以2的幂？

2021年4月1日15:40:56 发表评论 507 次浏览

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

http://graphics.stanford.edu/~seander/bithacks.html#ModulusDivisionEasy