将Number转换为二进制字符串的函数

Fra*_*ppe 2 javascript binary function

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

这一步创建了一个二进制有序数组,我将使用它来检查传入的参数:

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)
Run Code Online (Sandbox Code Playgroud)

下一步应该比较并吐出一个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)
}
Run Code Online (Sandbox Code Playgroud)

链接到CodePen:https://codepen.io/fdeppe/pen/GEozKY 编辑= 1111

Sam*_*gun 9

实际上这可以解决问题

function dec2bin(dec){
    return (dec >>> 0).toString(2);
}
Run Code Online (Sandbox Code Playgroud)

这里的解释==> JavaScript中的二进制字符串的负数

-3 >>> 0(右逻辑移位)将其参数强制转换为无符号整数,这就是为什么得到-3的32位二进制补码表示的原因.

  • 不,因为它对负数不起作用 (2认同)