Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
评估javascript base10到base2的转换函数_Javascript_Testing_Binary_Numbers - Fatal编程技术网

评估javascript base10到base2的转换函数

评估javascript base10到base2的转换函数,javascript,testing,binary,numbers,Javascript,Testing,Binary,Numbers,我编写了一个简单的函数,将以10为基数的数字转换为二进制数。我编写的函数是我使用我所知道的简单工具的最佳尝试。我在这个网站上找到了其他的方法,但我还不太了解。我确信我写的函数很奇怪,但它似乎起到了作用 下面是一个JSFIDLE,显示了它的作用: 下面是功能代码: var toBinary = function(x) { x = parseInt(x); if (x < 0) { var k = '-' x = Math.sqrt(Math.pow(x, 2)

我编写了一个简单的函数,将以10为基数的数字转换为二进制数。我编写的函数是我使用我所知道的简单工具的最佳尝试。我在这个网站上找到了其他的方法,但我还不太了解。我确信我写的函数很奇怪,但它似乎起到了作用

下面是一个JSFIDLE,显示了它的作用:

下面是功能代码:

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的数字转换函数感兴趣

您可以使用numObj.toStringbase pass base value作为参数,添加了演示

var input=document.getElementByIddecimal; input.addEventListenerinput,getBinary; 函数getBinary{ var decimal=document.getElementByIddecimal.value; var binary=Numberdecimal.toString2; document.getElementByIdbinary.innerHTML=二进制; }; 身体{ 左边距:20px; 字体系列:monospace; 字号:18px; } p{显示:内联块;} 在此处输入一个数字:

这是该数字,但为二进制:


我可以用什么方式将函数的输出与您描述的方法进行比较?例如,是否有某种方法可以区分base10中的字符串101 1 0 1、数字101 100 1和二进制数101 5?@Jozurcrunch,方法是通过知道它是用哪个基写的。否,否则101与101无法区分。但是,如果您想用所用的基数对数字表示进行注释,通常会将其用作后缀:101₁₀ = 1100101₂, 101₂ = 5.₁₀我尝试在一些输出上使用一些位运算符,并做了一些工作。但是如果我尝试g=toBinary5=101,h=toBinary7=111,那么做XOR g^h,结果是“10”,当我知道它应该是“010”。这是否说明我的代码中存在问题?