📜  使用 Wrapper 类计算模除以 2 的幂数

📅  最后修改于: 2022-05-13 01:55:38.844000             🧑  作者: Mango

使用 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