寻找时间和 space 有效的算法将任何整数转换为二进制值

Looking for time and space effective algorithm to convert any integer number into binary value

我完全是编程新手,这是我在在线社区中发布的第一个问题。我已经使用 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循环的时间复杂度?

简单快速的算法

foo = 42
console.log(foo.toString(2))

因为在 JavaScript 中一切都是对象,数字也是对象,因此您可以调用它们的方法。

对于数字,Number.prototype.toString 接受一个参数,即基数。

如果您的值在 inputNumber 变量中,那么您可以调用 inputNumber.toString(2)

您也可以对硬编码值执行相同操作:1.1.toString(2)

如果你想打印常数整数要小心,因为第一个点将被解析为小数点,所以你必须写 (1).toString(2)1.0.toString(2) 或只是 1..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();