获取整数的二进制表示

Ale*_*lls 3 javascript binary bit-manipulation bitwise-operators node.js

我刚刚有一个面试问题,我需要得到一个整数的二进制表示,这是我应该知道怎么做的……例如,5 用二进制表示为 101,步骤如下所示:

// 5 % 2 = 1
// 5 / 2 = 2
// result = 1;

// 2 % 2 = 0
// 2 / 2 = 1
// result = 10

// 1 % 2 = 1
// 1 / 2 = 0
// result = 101
Run Code Online (Sandbox Code Playgroud)

停止条件是什么时候 ~~(1/2) === 0

所以我有这个:

const getBinary = (v) => {

  let remainder, binary = 1;

  while (true) {

    remainder = v % 2;
    v = ~~(v / 2);

    if (v === 0) {
      return binary;
    }

    if (remainder === 0) {
      binary = binary * 10 + 1;
    }
    else {
      binary = binary * 10;
    }
  }

};

console.log(getBinary(5));
Run Code Online (Sandbox Code Playgroud)

这样就可以了,但是binary变量被初始化为 1。有没有办法改进它,使其适用于负数,或者是否将 0 作为参数传递给函数?

小智 6

var integer = 52;
console.log(integer.toString(2));
Run Code Online (Sandbox Code Playgroud)

javascript原生的简单函数,不需要冗长的代码。