寻找时间和 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();
我完全是编程新手,这是我在在线社区中发布的第一个问题。我已经使用 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();