使用 Wrapper 类计算模除以 2 的幂数
先决条件:计算模除以 2 的幂数
现在您知道要获得 n 模数 2 k ,我们只需要以 n 的二进制表示形式返回 k 位(来自 LSB)。在Java中,您可以使用 Wrapper 类的toBinaryString()方法来获取数字的二进制字符串表示形式,并从 (str.length()-k) 获取子字符串以结束。然后通过使用Integer.parseInt() ,您可以将此二进制子字符串转换为余数。下面是演示相同的Java程序。
// Java program to Compute modulus
// division by a power-of-2-number
class Test
{
// Driver method
public static void main(String[] args)
{
int num = 15;
int two_power1 = 1;
int two_power2 = 2;
int two_power3 = 3;
String binary = Integer.toBinaryString(num);
int len = binary.length();
String rem1 = binary.substring(len-two_power1);
String rem2 = binary.substring(len-two_power2);
String rem3 = binary.substring(len-two_power3);
int reme1 = Integer.parseInt(rem1, 2);
int reme2 = Integer.parseInt(rem2, 2);
int reme3 = Integer.parseInt(rem3, 2);
System.out.println(num + "%" + "2^(" + two_power1 + ") = " + reme1);
System.out.println(num + "%" + "2^(" + two_power2 + ") = " + reme2);
System.out.println(num + "%" + "2^(" + two_power3 + ") = " + reme3);
}
}
输出:
15%2^(1) = 1
15%2^(2) = 3
15%2^(3) = 7