Javascript NodeJS中无符号short上的位移位运算符

Javascript NodeJS中无符号short上的位移位运算符,javascript,node.js,Javascript,Node.js,我试图对nodeJS/javascript中的无符号int执行按位NOT。据我所知,每个逐位运算符都是在有符号32位整数上执行的,这使得我在想对无符号16位整数(short)执行时感到困惑。这就是我想做的: c# ushort value = 41003; value = (ushort)~value; //Value is now 24532 which is correct nodeJS var value = 41003; value = ~value; //value is now -

我试图对nodeJS/javascript中的无符号int执行
按位NOT
。据我所知,每个逐位运算符都是在有符号32位整数上执行的,这使得我在想对无符号16位整数(short)执行时感到困惑。这就是我想做的:

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?

您只需按位执行,即可获得相同的结果:

value = ~value & 0xFFFF;

您可以使用一个16位数字的最大值并执行一个

函数not16Bit(v){

return((1或者您可以简单地使用uint16数组

(new Uint16Array([~41003]))[0] //24532

嗯,node不知道您希望值是一个
无符号的short
。这似乎就是我要查找的结果。谢谢