我正在尝试在nodeJS / javascript中对unsigned int执行Bitwise NOT
。在我的理解中,每个按位运算符都是在一个有符号的32位整数上完成的,当我想在无符号的16位整数(短)上进行操作时,这会让我感到困惑。这就是我想要做的事情:
c#
ushort value = 41003;
value = (ushort)~value;
//Value is now 24532 which is correct
nodeJS
var value = 41003;
value = ~value;
//value is now -41004 wich is NOT correct
如何在nodeJS / javascript中将最后一个值转换为无符号16位int?
答案 0 :(得分:2)
您可以按位进行AND以获得相同的结果:
value = ~value & 0xFFFF;
答案 1 :(得分:0)
您可以使用16位数的最大值并执行bitwise XOR ^
。
function not16Bit(v) {
return ((1 << 16) - 1) ^ v;
}
console.log(not16Bit(41003)); // 24532
console.log(not16Bit(24532)); // 41003
&#13;
答案 2 :(得分:0)
或者你可以简单地使用Uint16Array
(new Uint16Array([~41003]))[0] //24532