Java 最小位程序
我是Java新手。我试图及时从Java学习它 作者: 所以,我们需要一个程序来计算代表一个给定值需要多少位 不同值的数目 计划是:Java 最小位程序,java,c++,algorithm,Java,C++,Algorithm,我是Java新手。我试图及时从Java学习它 作者: 所以,我们需要一个程序来计算代表一个给定值需要多少位 不同值的数目 计划是: int numberOfValues = Integer.parseInt(args[0]); int noOfBits = 0; while (Math.pow(2, noOfBits) < numberOfValues) noOfBits = noOfBits + 1; int numberOfValues=Integer.parseInt(arg
int numberOfValues = Integer.parseInt(args[0]);
int noOfBits = 0;
while (Math.pow(2, noOfBits) < numberOfValues)
noOfBits = noOfBits + 1;
int numberOfValues=Integer.parseInt(args[0]);
int noOfBits=0;
while(Math.pow(2,noOfBits)
但这本书的作者被要求用另一个版本来写
作者:
在本任务中,您将编写MinimumBitWidth程序的一个变体,它的工作效率稍高一些。您的版本将在一个单独的变量中累积2到noOfBits
的幂,而不是在每次迭代时计算循环条件中2的幂。这可以通过将新变量初始化为1
,并在每次递增noOfBits
时将其值加倍来实现
您将使用与先前版本程序相同的测试数据
也许是因为英语不好,我不明白他的意思。谢谢你的帮助。:) 这意味着将数字与20、21。。。231 由于231大于Integer.MAX_值,因此可以使用长字符
int noOfBits = 0;
long pow2 = 1;
while (numberOfValues >= pow2) {
++noOfBits;
//pow2 = 2 * pow2
//pow2 += pow2;
//pow2 *= 2;
pow2 <<= 1; // Shift left once.
}
java和C++是不一样的,或者类似于C++。你为什么要用那个标签?我需要的不仅仅是算法。他的意思是不要每次从头开始重新计算Math.pow(2,noOfBits):保存你在上一个循环中计算的值,并在下一个循环中更新以进行测试。请注意,您也可以使用
@Jongware“Java与C++不同”:您是认真的吗?2^(noOfBits+1)=2*2^noOfBits
int noOfBits = 32 - Integer.numberOfLeadingZeros(numberOfValues);