JavaScript设置了四位

时间:2013-01-07 16:07:45

标签: javascript node.js bit-manipulation bitwise-operators bit

我得到了以下位模式:

1000 0001 (129)

我现在想要设置最后四位(1 - 10,0x1 - 0xA):

1000 0010

1000 1000

我实际上不知道如何才能做到这一点。我能读出前四位:

var buff = new Buffer(1);

buff[0] = 129;

var isFirstBitSet = (buff[0] & 128) == 128;
var isSecondBitSet = (buff[0] & 64) == 40;
var isThirdBitSet = (buff[0] & 32) === 32;
var isFourthBitSet = (buff[0] & 16) === 16;

var buff[0] = 0xA;

if (isFirstBitSet) {
    buff[0] = buff[0] & 128;
}

然后映射一个新的,但我认为这是自我解释,这是废话。

1 个答案:

答案 0 :(得分:5)

您可以先设置整数的低四位,然后将整数与0xfffffff0进行对比,然后将其与四位值进行或运算。

function setLowFour(n, lowFour) {
  return (n & 0xfffffff0) | (lowFour & 0xf);
}

请注意,JavaScript实际上没有整数类型。按位运算强制值为整数,但它们实际上仍然存储为浮点数。

编辑 - 我认为它实际上也有效:-) setLowFour(1025, 12)返回1036.如何进行单元测试?