寻找将所有整数转换为二进制值的时空有效算法

问题描述 投票:1回答:3

我完全是编程的新手,这是我在在线社区中发布的第一个问题。我已经编写了一个使用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 while-loop time-complexity space-complexity
3个回答
0
投票

由于所有内容都是JavaScript中的对象,因此数字也是对象,因此您可以在其上调用方法。

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

如果您在inputNumber变量中包含值,则可以调用inputNumber.toString(2)

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

如果要打印常量整数,请注意,因为第一个点将被解析为小数点,因此为了显示硬编码数字,必须写(1).toString(2)1.0.toString(2)或仅写1..toString(2)


0
投票

一种简单而快速的算法

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

0
投票

如果您想要数字的字符串版本,可以有

Long.toString(42, <base>);

例如,

System.out.println(Long.toString(30, 2));

产生

11110

如果需要数字的整数数组,可以键入

int[] num = Long.toString(<num>, <base>).chars().map(c->c-'0').toArray();
© www.soinside.com 2019 - 2024. All rights reserved.