我完全是编程的新手,这是我在在线社区中发布的第一个问题。我已经编写了一个使用JavaScript将任何整数转换为二进制值的函数。
function number2Binary(inputNumber){
var digitsArray=[];
if(inputNumber === 0 || inputNumber === 1)
{
return inputNumber;
}
while(inputNumber>0){
var bit = inputNumber%2;
inputNumber= parseInt(inputNumber/2);
digitsArray.push(bit);
}
return digitsArray.reverse().join(" ");
}
number2Binary(2);
我很确定这可能不是最佳解决方案。有人可以为这个问题提出更好的解决方案吗?附加问题:1.我在脚本中使用了while循环。如何计算while循环的时间复杂度?
由于所有内容都是JavaScript中的对象,因此数字也是对象,因此您可以在其上调用方法。
对于数字,Number.prototype.toString
接受一个参数,即底数。
如果您在inputNumber变量中包含值,则可以调用inputNumber.toString(2)
。
您也可以对硬编码的值进行同样的操作:1.1.toString(2)
。
如果要打印常量整数,请注意,因为第一个点将被解析为小数点,因此为了显示硬编码数字,必须写(1).toString(2)
或1.0.toString(2)
或仅写1..toString(2)
。
一种简单而快速的算法
foo = 42
console.log(foo.toString(2))
如果您想要数字的字符串版本,可以有
Long.toString(42, <base>);
例如,
System.out.println(Long.toString(30, 2));
产生
11110
如果需要数字的整数数组,可以键入
int[] num = Long.toString(<num>, <base>).chars().map(c->c-'0').toArray();