编写一个将数字传递的函数转换为二进制字符串。该函数正在创建一个合适的二进制序列,但我的比较函数在比较等于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)
下一步应该比较并吐出一个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
答案 0 :(得分:9)
实际上这可以解决问题
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
这里的解释==&gt; Negative numbers to binary string in JavaScript
-3&gt;&gt;&gt; 0(右逻辑移位)将其参数强制转换为无符号整数,这就是为什么你得到-3位的32位二进制补码表示。