如何生成一个包含特定位数的新整数

How to generate a new int with a specific amount of bits in it

问题

你好,我最近开始在我的程序中对域使用二进制表示,这提高了该域的计算速度,但我现在需要一种根据所需的输入位数生成整数的方法.

我的应用程序在 Java 所以任何代码都很棒。

例子

例如,如果我得到以下输入,我希望得到以下数字:

用户输入 - 生成的 Int(生成的 int 的二进制)

01 - 1    (0b1)
02 - 3    (0b11)
03 - 7    (0b111)
04 - 15   (0b1111)
05 - 31   (0b11111)
06 - 63   (0b111111)
07 - 127  (0b1111111)
08 - 255  (0b11111111)
09 - 511  (0b111111111)
10 - 1023 (0b1111111111)

任何帮助都会有用谢谢!

在我完成输入并测试之前实际上想出了答案,可能对任何其他想知道的用户有用:

    int domain = 1;
    for (int x=0;x<USERINPUT;x++){
        domain = domain*2;
    }
    domain--;
    System.out.println("Domains:"+domain+" = "+Integer.toBinaryString(domain));

你的意思是这样的吗:

public int getInt(int input){
    return (1<<input)-1;
}

假设 input=5 然后
1<<输入 (1<<5) 是二进制 100000
然后它只需要减少到 11111
它的十进制数是 31