反向枚举二进制数位

时间:2014-01-12 06:05:47

标签: javascript binary

我目前有这个循环,它接受一个整数,并为它的二进制版本的每一位输出0或1。

var m = 10;
for (var i = 0; i < 8; i++) {
  bit = m & 1;
  console.log(bit ? + 1 : 0 );
  m >>= 1;
}

这导致0 1 0 1 0 0 0 0

如何让它反向循环? 0 0 0 0 1 0 1 0

2 个答案:

答案 0 :(得分:2)

如果您想手工制作整个二进制表示实现,那么您可以使用Barmar's answer

但是,好消息是,有一个可靠的内置函数Number.prototype.toString可以用来做这个,就像这样

var bin = (10).toString(2), numberOfBits = 8;
console.log((new Array(numberOfBits + 1).join("0") + bin).slice(bin.length));

<强>输出

00001010

答案 1 :(得分:0)

迭代一个位掩码,而不是移位整数位。

for (var i = 7; i >= 0; i--) {
    bit = m & (1 << i);
    console.log(bit ? 1 : 0);
}

或:

for (var mask = 1 << 7; mask; mask >>= 1) {
    bit = m & mask;
    console.log(bit ? 1 : 0);
}