如何生成一个包含特定位数的新整数
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
问题
你好,我最近开始在我的程序中对域使用二进制表示,这提高了该域的计算速度,但我现在需要一种根据所需的输入位数生成整数的方法.
我的应用程序在 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