bod*_*ser 1 javascript bit-manipulation bit bitwise-operators node.js
我得到了以下位模式:
1000 0001 (129)
Run Code Online (Sandbox Code Playgroud)
我现在想要设置后面的最后四位(1 - 10,0x1 - 0xA):
1000 0010
Run Code Online (Sandbox Code Playgroud)
要么
1000 1000
Run Code Online (Sandbox Code Playgroud)
我实际上不知道如何才能做到这一点.我可以读出前四位:
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;
}
Run Code Online (Sandbox Code Playgroud)
然后在一个新的地图上映射,但我认为这是自我解释,这是废话.
您可以先设置一个整数的低四位0xfffffff0,然后将整数与,然后将其与四位值进行或运算.
function setLowFour(n, lowFour) {
return (n & 0xfffffff0) | (lowFour & 0xf);
}
Run Code Online (Sandbox Code Playgroud)
请注意,JavaScript实际上没有整数类型.按位运算强制值为整数,但它们实际上仍然存储为浮点数.
编辑 - 我认为它实际上也有效:-) setLowFour(1025, 12)返回1036.如何进行单元测试?
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |