我希望看到二进制形式的正整数或负整数。

很像这个问题,但是是针对JavaScript的。


当前回答

这是我的代码:

var x = prompt("enter number", "7");
var i = 0;
var binaryvar = " ";

function add(n) {
    if (n == 0) {
        binaryvar = "0" + binaryvar; 
    }
    else {
        binaryvar = "1" + binaryvar;
    }
}

function binary() {
    while (i < 1) {
        if (x == 1) {
            add(1);
            document.write(binaryvar);
            break;
        }
        else {
            if (x % 2 == 0) {
                x = x / 2;
                add(0);
            }
            else {
                x = (x - 1) / 2;
                add(1);
            }
        }
    }
}

binary();

其他回答

我是这样处理的:

const decbin = nbr => {
  if(nbr < 0){
     nbr = 0xFFFFFFFF + nbr + 1
  }
  return parseInt(nbr, 10).toString(2)
};

从这个链接获得:https://locutus.io/php/math/decbin/

逻辑可以被任何编程语言实现的实际解决方案:

如果你确定它只是积极的:

var a = 0;
var n = 12; // your input
var m = 1;
while(n) {
    a = a + n%2*m;
    n = Math.floor(n/2);
    m = m*10;
}

console.log(n, ':', a) // 12 : 1100

若能负或正——

(n >>> 0).toString(2)

我们还可以计算正数或负数的二进制,如下所示:

函数toBinary (n) { Let binary = ""; 如果(n < 0) { N = N >>> 0; } while(Math.ceil(n/2) > 0){ 二进制= n%2 +二进制; n = Math.floor(n/2); } 返回二进制; } console.log (toBinary (7)); console.log (toBinary (7));

您可以编写自己的函数来返回一个比特数组。 示例如何将数字转换为比特

除数|被除数|位/余数

2 | | 1

2 4 | | 0

2 | 2 | 0

~ | | ~ 1

上面一行的例子:2 * 4 = 8,余数为1 9 = 1 0 0 1

function numToBit(num){
    var number = num
    var result = []
    while(number >= 1 ){
        result.unshift(Math.floor(number%2))
        number = number/2
    }
    return result
}

从下往上读余数。数字1从中间到上面。

这是我常用的方法。这是一个非常快速和简洁的方法,适用于整数。

如果你愿意,这个方法也适用于bigint。你只需要把每个1变成1n。

// Assuming {num} is a whole number
function toBin(num){
    let str = "";
    do {
        str = `${num & 1}${str}`;
        num >>= 1;
    } while(num);
    return str
}

解释

这个方法,在某种程度上,遍历数字的所有位,就好像它已经是一个二进制数。

它以一个空字符串开始,然后将最后一位放在前面。Num & 1将返回数字的最后一位(1或0)。Num >>= 1然后删除最后一位,并将倒数第二位作为新的最后一位。重复这个过程,直到所有的位都被读取。

当然,这是对实际情况的极端简化。我是这样概括的。