如何生成具有特定位数的新int

时间:2015-05-17 20:02:49

标签: java bit-manipulation bit

问题

您好,我最近在我的程序中使用了二进制表示法,这增强了该域的计算速度,但我现在需要一种根据所需的输入位数生成整数的方法。

我的应用程序是用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)

ETC

任何帮助都会有用,谢谢!

2 个答案:

答案 0 :(得分:3)

你的意思是这样的:

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

让我们说input=5然后 1&lt;&lt;输入(1 <&lt; 5)是二进制100000
然后它只需减少到11111
它的十进制数为31

答案 1 :(得分:0)

在我完成打字并刚刚测试之前,实际上想出了答案,对于任何想要了解的用户可能会有用:

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