编写一个函数,将传入的数字转换为二进制字符串。该函数正在创建正确的二进制序列,但是当比较等于binaryIndex[0]的数字(例如n = 32、16、8、4)时,我的compare函数将跳过第一个索引。有什么想法吗?

此步骤创建一个二进制有序数组,这将是我用来检查传递的参数的方法:

var Bin = function(n) {
  var x =1;
  var binSeq=[];
  var converted=[];
  for (var i=0; x <= n; i++) {
  binSeq.unshift(x)
  x = x+x
  }
  console.log(binSeq)

下一步应该比较并吐出1和0的二进制序列:但是它跳过了if (n === binSeq[0])
for (var i=0; i < binSeq.length; i++) {
  if ((n - binSeq[i]) >= 0) {
  converted.unshift(1);
  n=n-binSeq[i]
  } else {converted.unshift(0)}
}
console.log(converted)
}

链接到CodePen:https://codepen.io/fdeppe/pen/GEozKY?editors=1111

最佳答案

其实这可以解决问题

function dec2bin(dec){
    return (dec >>> 0).toString(2);
}

这里的解释==> Negative numbers to binary string in JavaScript

08-15 22:46