您好,我最近在我的程序中使用了二进制表示法,这增强了该域的计算速度,但我现在需要一种根据所需的输入位数生成整数的方法。
我的应用程序是用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
任何帮助都会有用,谢谢!
答案 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));