将javascript base10评估为base2转换函数

时间:2017-07-07 01:33:38

标签: javascript testing binary numbers

我编写了一个简单的函数来将基数为10的数字转换为二进制数。我写的这个函数是我最好的尝试,使用我所知道的简单工具。我已经在本网站上查找了其他如何做到这一点的方法,我还没有理解它的大部分内容。我确信我写的这个函数很奇怪但似乎来做这个伎俩。

这是一个jsfiddle显示它在行动: https://jsfiddle.net/unpkt48e/

这是功能代码:

var toBinary = function(x) {

  x = parseInt(x);

  if (x < 0) {
    var k = '-' 
    x = Math.sqrt(Math.pow(x, 2));    
  }

  if (x == 0) {
    return 0;
  }

  var y = x;
  var g = [];

  while (Math.log2(y) >= 0) {
    var n = parseInt(Math.log2(y)); 
    g.push(n+1);
    y = y - Math.pow(2, n);
  }

  var binArray = [];
  for (var i = 0; i < g[0]; i++) {
    binArray.push(0);
  }
  for (var i = 0; i < g.length; i++) {
    binArray[binArray.length-g[i]] = 1;
  }

  var binary = binArray.join("");
  return (k || "") + binary;

};

我还没有很多工具来评估这个,所以我的问题如下:

这个函数返回的内容看起来是正确的,但我怎样才能确定我得到的实际上是二进制数而不仅仅是一个看起来像二进制数的字符串。我错过了一些关键部分吗?或者我的方法是死路一条?

另一个问题:JS中是否有内置函数为我执行此操作?大多数情况下,这对我来说是一个学习练习,所以我仍然有兴趣生成base10到base2数字转换功能。

1 个答案:

答案 0 :(得分:1)

您可以使用toString() numObj.toString(base)传递基值作为参数,添加演示

var input = document.getElementById("decimal");
input.addEventListener("input", getBinary);

function getBinary() {
  var decimal = document.getElementById("decimal").value;
  var binary = Number(decimal).toString(2);
  document.getElementById("binary").innerHTML = binary;
};
body {
  margin-left: 20px;
  font-family: monospace;
  font-size: 18px;
}
p { display: inline-block; }
<body>
<p>Enter a number here:</p>
<input id="decimal"><br><br>

<p>This is that number but in binary:</p><br>
<p id="binary" style="border: 1px solid black; height: 20px;min-width :100px"></p>
</body>